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构造函数及解构函数介绍
Feb 26 Python
Python实现批量下载文件
May 17 Python
Django与JS交互的示例代码
Aug 23 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
Aug 23 Python
Python开发的HTTP库requests详解
Aug 29 Python
手把手教你用python抢票回家过年(代码简单)
Jan 21 Python
对Python中for复合语句的使用示例讲解
Nov 01 Python
python绘图模块matplotlib示例详解
Jul 26 Python
Python学习笔记之Break和Continue用法分析
Aug 14 Python
python通过函数名调用函数的几种场景
Sep 23 Python
python之django路由和视图案例教程
Jul 26 Python
Python实现对齐打印 format函数的用法
Apr 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编程最快明白》第七讲:php图片验证码与缩略图
2010/11/01 PHP
PHP基础陷阱题(变量赋值)
2012/09/12 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
2013/06/19 PHP
php class类的用法详细总结
2013/10/17 PHP
Thinkphp框架中D方法与M方法的区别
2016/12/23 PHP
详解PHP处理字符串类似indexof的方法函数
2017/06/11 PHP
javascript Array.prototype.slice使用说明
2010/10/11 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
JavaScript 在网页上单击鼠标的地方显示层及关闭层
2012/12/30 Javascript
jquery中 $.expr使用实例介绍
2014/06/09 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
Bootstrap Search Suggest使用例子
2016/12/21 Javascript
jQuery阻止移动端遮罩层后页面滚动
2017/03/15 Javascript
linux 下以二进制的方式安装 nodejs
2020/02/12 NodeJs
python获得两个数组交集、并集、差集的方法
2015/03/27 Python
用Python实现一个简单的能够发送带附件的邮件程序的教程
2015/04/08 Python
使用Python读取二进制文件的实例讲解
2018/07/09 Python
python中调试或排错的五种方法示例
2019/09/12 Python
提升python处理速度原理及方法实例
2019/12/25 Python
python如何实现不可变字典inmutabledict
2020/01/08 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
2020/07/14 Python
python redis存入字典序列化存储教程
2020/07/16 Python
python 两种方法删除空文件夹
2020/09/29 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
2020/11/25 Python
浅谈CSS3中的变形功能-transform功能
2017/12/27 HTML / CSS
Superdry极度乾燥官网:日本街头风格,纯英国制造品牌
2016/10/31 全球购物
日本最大的购物网站:日本乐天市场(Rakuten Ichiba)
2020/11/04 全球购物
英文自荐信
2013/12/19 职场文书
体育教学随笔感言
2014/02/24 职场文书
维护民族团结演讲稿
2014/08/27 职场文书
无私奉献演讲稿
2014/09/04 职场文书
单位委托书格式范本
2014/09/29 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/09/30 职场文书
离婚协议书范本(2016最新版)
2016/03/18 职场文书
php去除数组中为0的元素的实例分析
2021/11/17 PHP
vue实现在data里引入相对路径
2022/06/05 Vue.js