Python发送邮件功能示例【使用QQ邮箱】


Posted in Python onDecember 04, 2018

本文实例讲述了Python发送邮件功能。分享给大家供大家参考,具体如下:

这里以QQ邮箱为例说明

登录邮箱点账号

Python发送邮件功能示例【使用QQ邮箱】

开启smtp

Python发送邮件功能示例【使用QQ邮箱】

开启时会要求你发送一条短信,发送完成后点已发送。

就有授权码了

Python发送邮件功能示例【使用QQ邮箱】

代码如下,只需更改发件人、收件人等信息即可

# encoding: utf-8
import logging
import smtplib
from email.mime.text import MIMEText
import email.utils
from datetime import datetime
_logger = logging.getLogger('utils.mailclient')
class MailClient(object):
  def __init__(self, host, port, user, pwd=''):
    self._host = host
    self._port = port
    self._user = user
    self._pwd = pwd
    self._smtp_server = None
    self._debug = False
    self._keepalive = True
  def set_keepalive(self, keepalive):
    self._keepalive = keepalive
  def set_debug(self, debug):
    self._debug = debug
    if self._smtp_server is not None:
      self._smtp_server.set_debuglevel(self._debug)
  def _connect(self):
    if self._smtp_server is None:
      _smtp_server = smtplib.SMTP(self._host, self._port)
      _smtp_server.ehlo()
      _smtp_server.starttls()
      _smtp_server.set_debuglevel(self._debug)
      if self._pwd:
        _smtp_server.login(self._user, self._pwd)
      self._smtp_server = _smtp_server
    return self._smtp_server
  def _dispose(self):
    if self._smtp_server is not None:
      self._smtp_server.quit()
      self._smtp_server = None
  def send(self, to_addrs, subject, content, isdispose=True):
    _smtp_server = self._connect()
    if not isinstance(to_addrs, list):
      to_addrs = [to_addrs]
    _msg = MIMEText(content, 'html', 'utf-8')
    _msg['Subject'] = subject
    _msg['From'] = self._user
    _msg['To'] = '; '.join(to_addrs)
    _msg['Date'] = datetime.now().strftime('%Y-%d-%m %H:%M:%S')
    _smtp_server.sendmail(self._user, to_addrs, _msg.as_string())
    isdispose and (not self._keepalive) and self._dispose()
  def send_mails(self, mails):
    _smtp_server = self._connect()
    for mail in mails:
      self._send_mail(mail.get('to'), mail.get('subject'), mail.get('content'), False)
    (not self._keepalive) and self._dispose()
  def close(self):
    self._dispose()
if __name__ == '__main__':
  logging.basicConfig(level=logging.DEBUG,
            format='%(asctime)s %(name)s %(levelname)s:%(message)s',
            datefmt='%Y-%m-%d %H:%M:%S')
  import time
  s = MailClient('smtp.qq.com', 587, '10010@qq.com', '授权码') #  注意,此处端口要用587,465端口是ssl使用的。
  s.set_keepalive(False)
  s.set_debug(True)
  st = time.time()
  s.send('收信人邮箱地址', '测试', '测试邮件 From QQ') #要发送的账号、标题、内容
  print(time.time() - st)

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python编程修改MP3文件名称的方法
Apr 19 Python
pycharm重置设置,恢复默认设置的方法
Oct 22 Python
python实现逐个读取txt字符并修改
Dec 24 Python
python 将大文件切分为多个小文件的实例
Jan 14 Python
对Pytorch神经网络初始化kaiming分布详解
Aug 18 Python
Python统计分析模块statistics用法示例
Sep 06 Python
Python OpenCV视频截取并保存实现代码
Nov 30 Python
python IDLE添加行号显示教程
Apr 25 Python
python的dict判断key是否存在的方法
Dec 09 Python
python opencv实现图像配准与比较
Feb 09 Python
python入门之算法学习
Apr 22 Python
OpenCV-Python实现油画效果的实例
Jun 08 Python
python无限生成不重复(字母,数字,字符)组合的方法
Dec 04 #Python
uwsgi+nginx部署Django项目操作示例
Dec 04 #Python
解决python中无法自动补全代码的问题
Dec 04 #Python
Django框架实现的简单分页功能示例
Dec 04 #Python
Django开发的简易留言板案例详解
Dec 04 #Python
对python的bytes类型数据split分割切片方法
Dec 04 #Python
Python 从相对路径下import的方法
Dec 04 #Python
You might like
简单的PHP图片上传程序
2008/03/27 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
PHP调用接口用post方法传送json数据的实例
2018/05/31 PHP
javascript 动态添加表格行
2006/06/22 Javascript
prototype Element学习笔记(篇一)
2008/10/26 Javascript
javascript 实用的文字链提示框效果
2010/06/30 Javascript
一次失败的jQuery优化尝试小结
2011/02/06 Javascript
40个有创意的jQuery图片、内容滑动及弹出插件收藏集之一
2011/12/31 Javascript
获取客户端网卡MAC地址和IP地址实现JS代码
2013/03/17 Javascript
JS定时刷新页面及跳转页面的方法
2013/07/04 Javascript
简介JavaScript中的push()方法的使用
2015/06/09 Javascript
ECMAScript6函数剩余参数(Rest Parameters)
2015/06/12 Javascript
jQuery超赞的评分插件(8款)
2015/08/20 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
关于数据与后端进行交流匹配(点亮星星)
2016/08/03 Javascript
JavaScrpt判断一个数是否是质数的实例代码
2017/06/11 Javascript
JavaScript中EventLoop介绍
2018/01/22 Javascript
关于微信公众号开发无法支付的问题解决
2018/12/28 Javascript
Vue项目打包部署到iis服务器的配置方法
2019/10/14 Javascript
js实现简单的无缝轮播效果
2020/09/05 Javascript
vue.js封装switch开关组件的操作
2020/10/26 Javascript
[06:23]2014DOTA2西雅图国际邀请赛 小组赛7月12日TOPPLAY
2014/07/12 DOTA
python自动zip压缩目录的方法
2015/06/28 Python
实例解析Python设计模式编程之桥接模式的运用
2016/03/02 Python
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
python正则表达式匹配[]中间为任意字符的实例
2018/12/25 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
django删除表重建的实现方法
2019/08/28 Python
python图形绘制奥运五环实例讲解
2019/09/14 Python
纯CSS实现菜单、导航栏的3D翻转动画效果
2014/04/23 HTML / CSS
中东地区为妈妈们提供一切的头号购物目的地:Sprii
2018/05/06 全球购物
美国女士时尚珠宝及配饰购物网站:Icing
2018/07/02 全球购物
Nayomi官网:沙特阿拉伯王国睡衣和内衣品牌
2020/12/19 全球购物
运动会加油稿100字
2014/09/19 职场文书
2016入党心得体会范文
2016/01/06 职场文书
导游词之无锡东林书院
2019/12/11 职场文书