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实现的数据结构与算法之链表详解
Apr 22 Python
Python 列表理解及使用方法
Oct 27 Python
Java分治归并排序算法实例详解
Dec 12 Python
pytorch中tensor的合并与截取方法
Jul 26 Python
python绘制中国大陆人口热力图
Nov 07 Python
Python解决两个整数相除只得到整数部分的实例
Nov 10 Python
Python Pandas对缺失值的处理方法
Sep 27 Python
Python 线程池用法简单示例
Oct 02 Python
使用pytorch实现可视化中间层的结果
Dec 30 Python
tensorflow 初始化未初始化的变量实例
Feb 06 Python
Java byte数组操纵方式代码实例解析
Jul 22 Python
Python从文件中读取数据的方法步骤
Nov 18 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中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
2014/10/30 PHP
浅析php中array_map和array_walk的使用对比
2016/11/20 PHP
详解php几行代码实现CSV格式文件输出
2017/07/01 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
2019/10/11 PHP
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
Extjs入门之动态加载树代码
2010/04/09 Javascript
如何使用jQUery获取选中radio对应的值(一句代码)
2013/06/03 Javascript
JS匀速运动演示示例代码
2013/11/26 Javascript
JavaSacript中charCodeAt()方法的使用详解
2015/06/05 Javascript
jquery实现很酷的网页顶部图标下拉菜单效果
2015/08/22 Javascript
jQuery实现布局高宽自适应的简单实例
2016/05/28 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
2016/09/17 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
2016/11/30 Javascript
NodeJS测试框架mocha入门教程
2017/03/28 NodeJs
浅谈 Vue 项目优化的方法
2017/12/16 Javascript
javascript中的replace函数(带注释demo)
2018/01/07 Javascript
vue3.0 CLI - 2.6 - 组件的复用入门教程
2018/09/14 Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
2019/10/26 jQuery
[02:57]2014DOTA2国际邀请赛 选手辛苦解说更辛苦
2014/07/10 DOTA
python获取android设备的GPS信息脚本分享
2015/03/06 Python
对Python的Django框架中的项目进行单元测试的方法
2016/04/11 Python
Python的语言类型(详解)
2017/06/24 Python
ubuntu系统下使用pm2设置nodejs开机自启动的方法
2018/05/12 NodeJs
Python 创建新文件时避免覆盖已有的同名文件的解决方法
2018/11/16 Python
python输出带颜色字体实例方法
2019/09/01 Python
python+opencv实现车牌定位功能(实例代码)
2019/12/24 Python
英国足球店:UK Soccer Shop
2017/11/19 全球购物
WatchShop法国:英国排名第一的独立手表零售商
2020/02/17 全球购物
外语专业毕业生自荐信
2014/04/14 职场文书
文明村镇申报材料
2014/05/06 职场文书
六一儿童节主持开场白
2015/05/28 职场文书
医院病假条怎么写
2015/08/17 职场文书
2015年新教师个人工作总结
2015/10/14 职场文书
MySQL表的增删改查基础教程
2021/04/07 MySQL
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android