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检查指定文件是否存在的方法
Jul 06 Python
Python排序搜索基本算法之希尔排序实例分析
Dec 09 Python
Python实现JSON反序列化类对象的示例
Jan 31 Python
Python中字符串与编码示例代码
May 20 Python
python flask框架实现重定向功能示例
Jul 02 Python
python time.sleep()是睡眠线程还是进程
Jul 09 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
Feb 16 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
Jun 15 Python
django表单中的按钮获取数据的实例分析
Jul 31 Python
python 中的命名空间,你真的了解吗?
Aug 19 Python
python如何利用paramiko执行服务器命令
Nov 07 Python
python 对xml解析的示例
Feb 27 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/10/01 PHP
Yii实现单用户博客系统文章详情页插入评论表单的方法
2015/12/28 PHP
java微信开发之上传下载多媒体文件
2016/06/24 PHP
基于jquery的表头固定的若干方法
2011/01/27 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
2014/01/07 Javascript
NodeJS学习笔记之MongoDB模块
2015/01/13 NodeJs
小心!AngularJS结合RequireJS做文件合并压缩的那些坑
2016/01/09 Javascript
JS匿名函数类生成方式实例分析
2016/11/26 Javascript
JS对象是否拥有某属性如何判断
2017/02/03 Javascript
jQuery复合事件用法示例
2017/06/10 jQuery
基于JavaScript实现多级菜单效果
2017/07/25 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
AngularJS 监听变量变化的实现方法
2018/10/09 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
2018/10/30 Javascript
JS学习笔记之贪吃蛇小游戏demo实例详解
2019/05/29 Javascript
推荐几个不错的console调试技巧实现
2019/12/20 Javascript
js实现选项卡效果
2020/03/07 Javascript
基于javascript处理nginx请求过程详解
2020/07/07 Javascript
Javascript var变量删除原理及实现
2020/08/26 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
跟老齐学Python之网站的结构
2014/10/24 Python
python模块简介之有序字典(OrderedDict)
2016/12/01 Python
python学生管理系统
2019/01/30 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
2019/03/14 Python
python做反被爬保护的方法
2019/07/01 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
JOSEPH官网:英国奢侈时尚品牌
2018/01/31 全球购物
澳大利亚窗帘商店:Curtain Wonderland
2019/12/01 全球购物
澳大利亚顶级美发和美容贸易超市:glamaCo
2020/01/19 全球购物
25道Java面试题集合
2013/05/21 面试题
学生档案自我鉴定
2013/10/07 职场文书
研究生求职推荐信范文
2013/11/30 职场文书
2016学校先进集体事迹材料
2016/02/29 职场文书
创业计划书详解
2019/07/19 职场文书
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
2021/04/13 Python
sql server 累计求和实现代码
2022/02/28 SQL Server