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中操作日期和时间之gmtime()方法的使用
May 22 Python
Python中如何优雅的合并两个字典(dict)方法示例
Aug 09 Python
Python解析并读取PDF文件内容的方法
May 08 Python
windows下添加Python环境变量的方法汇总
May 14 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
Jul 16 Python
Python循环结构的应用场景详解
Jul 11 Python
python爬虫 基于requests模块的get请求实现详解
Aug 20 Python
对python中的*args与**kwgs的含义与作用详解
Aug 28 Python
使用OpenCV实现仿射变换—缩放功能
Aug 29 Python
python实现低通滤波器代码
Feb 26 Python
Django之choices选项和富文本编辑器的使用详解
Apr 01 Python
使用Pytorch实现two-head(多输出)模型的操作
May 28 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基础知识:类与对象(4) 范围解析操作符(::)
2006/12/13 PHP
Linux fgetcsv取得的数组元素为空字符串的解决方法
2011/11/25 PHP
smarty模板引擎之分配数据类型
2015/03/30 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
2016/05/04 PHP
php PDO实现的事务回滚示例
2017/03/23 PHP
javascript下有关dom以及xml节点访问兼容问题
2007/11/26 Javascript
jquery 3D球状导航的文章分类
2010/07/06 Javascript
关于JS判断图片是否加载完成且获取图片宽度的方法
2013/04/09 Javascript
深入理解javascript动态插入技术
2013/11/12 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
jQuery 中$(this).index与$.each的使用指南
2014/11/20 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
2016/02/27 Javascript
easyui tree带checkbox实现单选的简单实例
2016/11/07 Javascript
利用node.js制作命令行工具方法教程(一)
2017/06/22 Javascript
react系列从零开始_简单谈谈react
2017/07/06 Javascript
vue.js数据绑定操作详解
2018/04/23 Javascript
Vue 组件传值几种常用方法【总结】
2018/05/28 Javascript
vue的过滤器filter实例详解
2018/09/17 Javascript
layer关闭当前窗口页面以及确认取消按钮的方法
2019/09/09 Javascript
Python多线程编程(三):threading.Thread类的重要函数和方法
2015/04/05 Python
Python函数式编程指南(一):函数式编程概述
2015/06/24 Python
理解Python中的With语句
2016/03/18 Python
python的pip安装以及使用教程
2018/09/18 Python
浅析Python函数式编程
2018/10/06 Python
Python自动发送邮件的方法实例总结
2018/12/08 Python
Python3将数据保存为txt文件的方法
2019/09/12 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
Python opencv相机标定实现原理及步骤详解
2020/04/09 Python
keras 权重保存和权重载入方式
2020/05/21 Python
HTML5公共页面提取作为公用代码的方法
2020/06/30 HTML / CSS
促销活动总结怎么写
2014/06/25 职场文书
暑期政治学习心得体会
2014/09/02 职场文书
领导干部个人整改措施落实情况汇报
2014/10/29 职场文书
2014年高校辅导员工作总结
2014/12/09 职场文书
2015年污水处理厂工作总结
2015/05/26 职场文书
PO模式在selenium自动化测试框架的优势
2022/03/20 Python