SMTP(Simple Mail Trasfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,用它来控制信件的中转方式。Python3对SMTP的支持有smtplib和email两个模块,smtplib负责发送电子邮件, email负责组织邮件内容,可发送的邮件形式包括:纯文本文件、html、附件、图像。

下面的测试代码是以给163发送邮件为例,获取163的授权码方式可以参考:https://jingyan.baidu.com/article/ce09321b862ed12bff858fd9.html

import smtplib
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.header import Header# reference: http://www.runoob.com/python/python-email.html# 第三方SMTP服务, 如163, qq, sina
mail_host = "smtp.163.com" # 设置服务器
mail_port = 25 # 端口号
mail_user = "fengbingchun" # 用户名
mail_pass = "xxxxx" # 163授权码sender = "fengbingchun@163.com" # 发送方
receivers = ["fengbingchun@163.com"] # 接收方def SendTextMessage(text):''' 发送纯文本邮件, text: 邮件内容 ''' # 三个参数:第一个为文本内容,第二个plain设置文本格式,第三个utf-8设置编码message = MIMEText(text, 'plain', 'utf-8') # 邮件内容message['From'] = Header("菜鸟教程", 'utf-8') # 发送者message['To'] =  Header("测试", 'utf-8') # 接收者subject = 'Python SMTP 邮件测试: plain text' # 邮件主题message['Subject'] = Header(subject, 'utf-8')try:smtpObj = smtplib.SMTP()smtpObj.connect(mail_host, mail_port)smtpObj.login(mail_user, mail_pass) smtpObj.sendmail(sender, receivers, message.as_string())print("邮件发送成功: plain text")except smtplib.SMTPException:print("Error: 无法发送邮件, plain text")def SendHtmlMessage():''' 发送html邮件 '''mail_msg = """<p>Python 邮件发送测试: this is a html email</p><p><a href="http://www.runoob.com">这是一个链接</a></p>"""message = MIMEText(mail_msg, 'html', 'utf-8')message['From'] = Header("菜鸟教程", 'utf-8')message['To'] =  Header("测试", 'utf-8')subject = 'Python SMTP 邮件测试: html'message['Subject'] = Header(subject, 'utf-8')try:smtpObj = smtplib.SMTP()smtpObj.connect(mail_host, mail_port)smtpObj.login(mail_user, mail_pass) smtpObj.sendmail(sender, receivers, message.as_string())print("邮件发送成功: html")except smtplib.SMTPException:print("Error: 无法发送邮件, html")def SendAttachmentMessage():''' 发送带附件的邮件 '''message = MIMEMultipart()message['From'] = Header("菜鸟教程", 'utf-8')message['To'] =  Header("测试", 'utf-8')subject = 'Python SMTP 邮件测试: attachment'message['Subject'] = Header(subject, 'utf-8')# 邮件正文内容message.attach(MIMEText('这是菜鸟教程Python 邮件发送测试: attachment', 'plain', 'utf-8'))# 构造附件1,传送当前目录下的 test.txt 文件att1 = MIMEText(open('test.txt', 'rb').read(), 'base64', 'utf-8')att1["Content-Type"] = 'application/octet-stream'# 这里的filename可以任意写,写什么名字,邮件中显示什么名字att1["Content-Disposition"] = 'attachment; filename="test.txt"'message.attach(att1)# 构造附件2,传送当前目录下的 runoob.txt 文件att2 = MIMEText(open('runoob.txt', 'rb').read(), 'base64', 'utf-8')att2["Content-Type"] = 'application/octet-stream'att2["Content-Disposition"] = 'attachment; filename="runoob.txt"'message.attach(att2)try:smtpObj = smtplib.SMTP()smtpObj.connect(mail_host, mail_port)smtpObj.login(mail_user, mail_pass) smtpObj.sendmail(sender, receivers, message.as_string())print("邮件发送成功: attachment")except smtplib.SMTPException:print("Error: 无法发送邮件: attachment")def SendHtmlImageMessage():''' 发送带html+image的邮件 '''msgRoot = MIMEMultipart('related')msgRoot['From'] = Header("菜鸟教程", 'utf-8')msgRoot['To'] =  Header("测试", 'utf-8')subject = 'Python SMTP 邮件测试: html+image'msgRoot['Subject'] = Header(subject, 'utf-8')msgAlternative = MIMEMultipart('alternative')msgRoot.attach(msgAlternative)mail_msg = """<p>Python 邮件发送测试: html+image</p><p><a href="http://www.runoob.com">菜鸟教程链接</a></p><p>图片演示:</p><p><img src="cid:image1"></p>"""msgAlternative.attach(MIMEText(mail_msg, 'html', 'utf-8'))# 指定图片为当前目录fp = open('test.png', 'rb')msgImage = MIMEImage(fp.read())fp.close()# 定义图片 ID,在 HTML 文本中引用msgImage.add_header('Content-ID', '<image1>')msgRoot.attach(msgImage)try:smtpObj = smtplib.SMTP()smtpObj.connect(mail_host, mail_port)smtpObj.login(mail_user, mail_pass) smtpObj.sendmail(sender, receivers, msgRoot.as_string())print("邮件发送成功: html+image")except smtplib.SMTPException:print("Error: 无法发送邮件: html+image")if __name__ == "__main__":SendTextMessage("Hello, Python 邮件发送测试: this is a plain text email!")SendHtmlMessage()SendAttachmentMessage()SendHtmlImageMessage()   print("finish")

执行结果如下:

收到的邮件结果如下:

GitHub:https://github.com/fengbingchun/Python_Test

使用Python3发送邮件测试代码相关推荐

  1. 11. Python3 测试代码

    测试函数 先看下测试代码 name_function.py def get_formatted_name(first, last, middle=''):"""生成整洁的 ...

  2. 对象检测工具包mmdetection简介、安装及测试代码

    mmdetection是商汤和港中文大学联合开源的基于PyTorch的对象检测工具包,属于香港中文大学多媒体实验室open-mmlab项目的一部分.该工具包提供了已公开发表的多种流行的检测组件,通过这 ...

  3. TensorFlow-SSD测试代码梳理

    TensorFlow-SSD测试代码梳理,相信看过后对SSD的整个流程都一目了然了. 硬件:NVIDIA-GTX1080 软件:Windows7.python3.6.5.tensorflow-gpu- ...

  4. win10+VS2017+OpenCV4.5.0+OpenCV_contrib4.5.0+CUDA10.1/CUDA11.6源码编译及测试代码问题

    你参考的资料有: https://blog.csdn.net/qq_36679208/article/details/109639607 https://blog.csdn.net/qq_272789 ...

  5. php 邮件发送设置_PHP实现自动发送邮件功能代码(qq 邮箱)

    最近做一个邮箱验证的功能,研究了一会,搞定了邮件的自动发送.下面用qq邮箱作为演示,一步一步来解释: 代码下载地址 首先,就是做到邮件的发送,代码如下: //邮件发送 require "./ ...

  6. php自动发送邮件,PHP实现自动发送邮件功能代码(qq 邮箱)_php实例

    本文给大家分享以qq邮箱为例给大家介绍PHP实现自动发送邮件功能代码,感兴趣的朋友参考下吧 最近做一个邮箱验证的功能,研究了一会,搞定了邮件的自动发送.下面用qq邮箱作为演示,一步一步来解释: 代码下 ...

  7. Python timeit库测试代码片段运行时间

    timeit库文档:https://docs.python.org/zh-cn/3/library/timeit.html timeit 是一个用来测量小代码片段执行时间的工具库,有命令行和函数调用两 ...

  8. 测试代码发布到博客效果(Windows Live Writer发布)

    测试代码发布到博客效果(Windows Live Writer发布) public class SwitchCase {/*** 1.switch后面的表达式为常量表达式,类型只能是可以转化为int. ...

  9. 【camera】自动泊车-基于深度学习的视觉车位检测项目(课程设计--训练代码、测试代码、部署demo)(2)

    **基于深度学习的点定位回归和角度预测的车位检测 基于深度学习的点定位回归和角度预测 基于深度学习的角点检测和角度回归 ** 项目下载地址:训练代码.测试代码.部署demo 数据集百度网盘下载:数据集 ...

最新文章

  1. java初始化实例化_Java对象的创建过程:类的初始化与实例化
  2. 理解Maven中的SNAPSHOT版本和正式版本
  3. OpenCASCADE:扩展数据交换(XDE)的简介
  4. Linux-Vim使用技巧
  5. jmeter HTTPS和HTTP的区别
  6. 他回国后对学生说,玩会这12个游戏就能掌握python基础,其实不难
  7. Oracle数据块损坏的恢复实例
  8. Mybatis 输入映射
  9. java判断是否手机浏览器_User-Agent判断是什么浏览器
  10. 单机安装DynamicsAX2012R3VM
  11. SAS入门基础(常用函数)
  12. 弘辽科技:复购率太低怎么办呢?
  13. Java练习题_通过2月天数来判断平年闰年
  14. 为什么走线选择50欧姆阻抗
  15. CentOS7.5安装oracle11g
  16. python 库的安装(cmd+pip)
  17. 两位数求和(xhh)
  18. 云仓代发货到底是什么?
  19. hackthebox-Tracks-Beginner_Track-Jerry
  20. 【思考】开学第一课--大学的终结,终生学习

热门文章

  1. 相机标定:(1)相机模型
  2. nanodet训练voc数据集
  3. mxnet deepspeech网络结构打印
  4. 树莓派视觉小车 -- 物体跟踪(OpenCV)
  5. 【系列文章】面向自动驾驶的三维点云处理与学习(2)
  6. 在CentOS 6.3 64bit上安装libunwind库
  7. C++ 多线程:条件变量 std::condition_variable
  8. python Django 学习笔记
  9. Zeal 离线API文档浏览器
  10. php 文件限速下载代码