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 随机数生成的代码的详细分析
May 15 Python
Python解析网页源代码中的115网盘链接实例
Sep 30 Python
Python学习小技巧之列表项的拼接
May 20 Python
Python3实现简单可学习的手写体识别(实例讲解)
Oct 21 Python
Python 解决中文写入Excel时抛异常的问题
May 03 Python
Python进程间通信 multiProcessing Queue队列实现详解
Sep 23 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
Feb 25 Python
matplotlib subplot绘制多个子图的方法示例
Jul 28 Python
Python常用数字处理基本操作汇总
Sep 10 Python
Python random模块的使用示例
Oct 10 Python
python飞机大战游戏实例讲解
Dec 04 Python
Python虚拟环境virtualenv创建及使用过程图解
Dec 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遍历文件夹与子目录的函数代码
2011/09/26 PHP
PHP函数extension_loaded()用法实例
2015/01/19 PHP
浅谈php处理后端&接口访问超时的解决方法
2016/10/29 PHP
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
2010/02/26 Javascript
JavaScript常用对象的方法和属性小结
2012/01/24 Javascript
jquery选择符快速提取web表单数据示例
2014/03/27 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
web前端开发JQuery常用实例代码片段(50个)
2015/08/28 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
js 自带的 map() 方法全面了解
2016/08/16 Javascript
javascript 网页进度条简单实例
2017/02/22 Javascript
实用的Vue开发技巧
2019/05/30 Javascript
JQuery省市联动效果实现过程详解
2020/05/08 jQuery
微信小程序完美解决scroll-view高度自适应问题的方法
2020/08/08 Javascript
python连接sql server乱码的解决方法
2013/01/28 Python
python中的函数用法入门教程
2014/09/02 Python
Python的字典和列表的使用中一些需要注意的地方
2015/04/24 Python
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
python字符串,数值计算
2016/10/05 Python
Python+selenium实现截图图片并保存截取的图片
2018/01/05 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
python3.7简单的爬虫实例详解
2019/07/08 Python
pip install python 快速安装模块的教程图解
2019/10/08 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
解决tensorflow训练时内存持续增加并占满的问题
2020/01/19 Python
代码总结Python2 和 Python3 字符串的区别
2020/01/28 Python
浅谈Pycharm最有必要改的几个默认设置项
2020/02/14 Python
django models里数据表插入数据id自增操作
2020/07/15 Python
Python Pivot table透视表使用方法解析
2020/09/11 Python
Charlotte Tilbury英国官网:英国彩妆品牌
2017/05/26 全球购物
艺术应用与设计个人的自我评价
2013/11/23 职场文书
员工评语大全
2014/01/19 职场文书
1亿有多大教学反思
2014/05/01 职场文书
vue3中的组件间通信
2021/03/31 Vue.js
「约定的梦幻岛」作画发布诺曼生日新绘
2022/03/21 日漫
nginx容器方式反向代理实战
2022/04/18 Servers