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模拟登录百度贴吧(百度贴吧登录)实例
Dec 18 Python
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
May 22 Python
python 类详解及简单实例
Mar 24 Python
python3实现公众号每日定时发送日报和图片
Feb 24 Python
Python+OpenCV实现车牌字符分割和识别
Mar 31 Python
Python 实现网页自动截图的示例讲解
May 17 Python
python3基于OpenCV实现证件照背景替换
Jul 18 Python
使用Django2快速开发Web项目的详细步骤
Jan 06 Python
结束运行python的方法
Jun 16 Python
Python自动发送和收取邮件的方法
Aug 12 Python
python基于openpyxl生成excel文件
Dec 23 Python
python实现过滤敏感词
May 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网页显示各种语法错误
2013/09/23 PHP
php合并数组中相同元素的方法
2014/11/13 PHP
php构造函数与析构函数
2016/04/23 PHP
广告显示判断
2006/08/31 Javascript
区分JS中的undefined,null,"",0和false
2007/03/08 Javascript
jQuery.get、jQuery.getJSON、jQuery.post无法返回JSON问题的解决方法
2011/07/28 Javascript
JS模块与命名空间的介绍
2013/03/22 Javascript
js动态创建表格,删除行列的小例子
2013/07/20 Javascript
jquery设置按钮停顿3秒不可用
2014/03/07 Javascript
jQuery如何将选中的对象转化为原始的DOM对象
2014/06/09 Javascript
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
2015/12/10 Javascript
BootStrap学习笔记之nav导航栏和面包屑导航
2017/01/03 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
JavaScript严格模式下关于this的几种指向详解
2017/07/12 Javascript
webpack搭建vue 项目的步骤
2017/12/27 Javascript
微信小程序封装自定义弹窗的实现代码
2019/05/08 Javascript
jQuery实现弹幕特效
2019/11/29 jQuery
[47:50]Secret vs VP 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
sqlalchemy对象转dict的示例
2014/04/22 Python
复习Python中的字符串知识点
2015/04/14 Python
详解python播放音频的三种方法
2019/09/23 Python
从多个tfrecord文件中无限读取文件的例子
2020/02/17 Python
使用python实现CGI环境搭建过程解析
2020/04/28 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
python向企业微信发送文字和图片消息的示例
2020/09/28 Python
Python LMDB库的使用示例
2021/02/14 Python
Rockport乐步美国官网:风靡美国的白宫鞋
2016/11/24 全球购物
世界经理人咨询有限公司面试
2014/09/23 面试题
C#如何进行LDAP用户校验
2012/11/21 面试题
上班打牌检讨书
2014/02/07 职场文书
餐厅经理岗位职责范本
2014/02/17 职场文书
学校三八妇女节活动总结
2015/02/06 职场文书
2015年农村党员公开承诺事项
2015/04/28 职场文书
建国大业观后感600字
2015/06/01 职场文书
详解Mysql 函数调用优化
2021/04/07 MySQL
Django中session进行权限管理的使用
2021/07/09 Python