使用python自动发送邮件

1、Python 自带的发送邮件功能

在生成报告后我们希望框架能自动把报告发送到我们的邮箱中。和outlook,foxmail等邮件客户端一样,Python中发送邮件需要通过Email的smtp服务发送。

首先需要确认用来发送邮件的邮箱是否启用了smtp服务,以126邮箱为例:

发送邮件分3步

1. 编写邮件内容(Email邮件需要专门的MIME格式)

2. 组装Email头(发件人,收件人,主题)

3. 连接smtp服务器并发送邮件

1.1 发送邮件基础实现

代码实现:

# -*- coding:utf-8 -*-
import smtplib  # 用于建立smtp连接
from email.mime.text import MIMEText  # 邮件需要专门的MIME格式# 1.编写邮件内容,email邮件需要专门的MIME格式
msg =MIMEText("这是邮件正文:Hello.yin,this is a test mail", "plain", "utf-8")  # plain指普通文本格式邮件内容# 2.组装Email头(发件人,收件人,主题)
msg['From'] = 'zuopuyin@126.com'  # 发件人
msg['To'] = 'zuopuyin2@126.com'  # 收件人
msg['Subject'] = '这是邮件主题:Hello yin Api Test Report'  # 邮件主题# 3.连接smtp服务器并发送邮件
smtp = smtplib.SMTP_SSL("smtp.126.com")  # smtp服务器地址,采用SSL模式
smtp.login('zuopuyin@126.com', 'ROFAUSLTHKIIQJM')  # 如果使用126邮箱,需在设置中申请授权密码
smtp.sendmail('zuopuyin@126.com', 'zuopuyin2@126.com', msg.as_string())
smtp.quit()

输出结果:

1.2 中文邮件主题、HTML邮件内容,及附件

实现代码:

# -*- coding:utf-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart  # 混合MIME格式,支持上传附件
from email.header import Header   # 用于使用中文邮件主题# 1.编写邮件内容
with open("testReport.html", encoding='utf-8') as f:  # 打开html报告email_body = f.read()  # 读取报告内容msg = MIMEMultipart()  # 混合MIME格式
msg.attach(MIMEText(email_body, 'html', 'utf-8'))  # 添加html格式邮件正文,会丢失css格式# 2.组装email的头
msg['From'] = 'zuopuyin@126.com'  # 发件人
msg['To'] = 'zuopuyin2@126.com'  # 收件人
msg['Subject'] = Header('接口测试报告', 'utf-8')  # 中文主题邮件,指定utf-8编码# 3.构造附件1,传送到当前目录下的text.txt文件
att1 = MIMEText(open('testReport.html', 'rb').read(), 'base64', 'utf-8')  # 二进制格式打开
att1["Content-Type"] = "application/octet-stream"
att1["Content-Disposition"] = 'attachment; filename="report.html"'  # filename为邮件中附件显示的名字
msg.attach(att1)# 连接smtp服务器并发送邮件
smtp = smtplib.SMTP_SSL("smtp.126.com")  # smtp服务器地址,使用SSL格式
smtp.login("zuopuyin@126.com", "ROFAUSLTHKIIQJM")  # 用户名和密码
smtp.sendmail("zuopuyin@126.com", "zuopuyin2@126.com", msg.as_string())
smtp.sendmail("zuopuyin@126.com", "yinzuopu@qq.com", msg.as_string())  # 发送给另一个邮箱
smtp.quit()

输出结果:

1.3 封装发送邮件办法

# -*- coding:utf-8 -*-
import smtplib
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from log.config import *def send_email(report_file):msg = MIMEMultipart()  # 混合MIME格式msg.attach(MIMEText(open(report_file, encoding='utf-8').read(), 'utf-8'))  #  添加html格式邮件正文(会丢失css格式)msg['From'] = 'zuopuyin@126.com'  # 发件人msg['To'] = 'yinzuopu@qq.com'  # 收件人msg['Subject'] = Header('接口测试报告', 'utf-8')  # 中文邮件主题,指定utf-8编码att1 = MIMEText(open(report_file, 'rb').read(), 'base64', 'utf-8')  # 二进制格式打开att1["Content-Type"] = 'application/octet-stream'att1["Content-Disposition"] = 'attachment; filename="testReport.html"'  # filename为邮件中附件显示的名字msg.attach(att1)try:smtp = smtplib.SMTP_SSL('smtp.126.com')  # smtp服务器地址 使用SSL模式smtp.login('zuopuyin@126.com', 'ROFAUSLTHKIIQJM')  # 用户名和密码smtp.sendmail("zuopuyin@126.com", "yinzuopu@qq.com", msg.as_string())smtp.sendmail("zuopuyin@126.com", "zuopuyin2@126.com", msg.as_string())  # 发送给另一个邮箱logging.info("邮件发送完成!")except Exception as e:logging.error(str(e))finally:smtp.quit()

run_all.py中结束后发送邮件

# -*- coding:utf-8 -*-import unittest
from HTMLTestRunner import HTMLTestRunner
from log.config import *
from test_send_mail_03 import send_email
logging.info("================================== 测试开始 ==================================")
suite = unittest.defaultTestLoader.discover("./")
with open("report.html", 'wb') as f:  # 改为with open 格式HTMLTestRunner(stream=f, title="Api Test", description="测试描述").run(suite)
send_email('report.html')  # 发送邮件
logging.info("================================== 测试结束 ==================================") 

csdn最牛最全的使用python自动发送邮件相关推荐

  1. python自动发送邮件不需要发件邮箱_python使用QQ邮箱实现自动发送邮件

    最近用到Python自动发送邮件,主要就是三步,登录邮件.写邮件内容.发送,用到的库是 smtplib 和 email,直接使用pip安装即可 我使用的是QQ邮箱,首先需要设置QQ邮箱POP3/SMT ...

  2. python自动发送邮件_Python自动发送邮件

    用 Python 自动发送邮件在日常工作中可以避免一些重复性的工作,Python 用来发送邮件会涉及到 smtplib 和 Email 两个模块,smtplib 是用来发送邮件用的,Email 是用来 ...

  3. Python 自动发送邮件详细教程

    自动发送邮件能应用于许多场景中,比如我想要知道股票策略中的股票池是否有实时的更新,这时候如果再拉一遍数据,跑一遍脚本,实在是太浪费时间了.为什么不把这一套流程放到服务器上,然后到点自动运行并发送邮件呢 ...

  4. python自动发送邮件

    python自动发送邮件 1.导入yagmail pip install yagmail #如果上面方式报错,建议使用阿里云镜像进行添加 pip install yagmail -i https:// ...

  5. 高效办公,如何利用Python自动发送邮件

    自动发送邮件 我们把报表做出来以后一般都是需要发给别人查看,对于一些每天需要发的报表或者是需要一次发送多份的报表,这个时候可以考虑借助Python来自动发送邮件. 使用邮箱的第一步 一般我们在使用QQ ...

  6. python自动发送邮件脚本

    目录 需要开通smtp功能 脚本 需要开通smtp功能 这里举例子使用的163的邮箱,每个邮箱都是一样的,发件邮箱设置即可 163网易免费邮-你的专业电子邮局 脚本 # -*- coding:utf- ...

  7. python自动发送邮件实现

    目录 1 前言 2 准备工作 2.1 电子邮件的基础知识. 2.2 python邮件库 2.3 邮箱设置 3 python实现邮件自动发送 3.1 SMTP()和send()方法介绍 3.2 pyth ...

  8. Python 自动发送邮件实战案例,人人都可以学会

    自动发送邮件能应用于许多场景,比如我想要知道股票策略中的股票池是否有实时的更新,这时候如果再拉一遍数据,跑一遍脚本,实在是太浪费时间了.为什么不把这一套流程放到服务器上,然后到点自动运行并发送邮件呢? ...

  9. python自动发送邮件(html、附件等),qq邮箱和网易邮箱发送和回复

    在python中,我们可以用程序来实现向别人的邮箱自动发送一封邮件,甚至可以定时,如每天8点钟准时给某人发送一封邮件.今天,我们就来学习一下,如何向qq邮箱,网易邮箱等发送邮件. 一.获取邮箱的SMT ...

最新文章

  1. 【C 语言】二级指针作为输入 ( 二维数组 | 二维数组遍历 | 二维数组排序 )
  2. 华为2013校园招聘上机笔试题
  3. 服务器虚拟机网卡怎么配置文件,VMWARE复制虚拟机之后,需重新配置网卡(CENTOS 6)...
  4. 分布式事务seate-server的docker镜像的制作与部署
  5. Core Data 编程指南
  6. 智能时代 软件赋能——2017中国软件技术大会
  7. vue-cli搭建项目的目录结构及说明
  8. Android char数据类型乱码��解决方法
  9. 转到Servlet出现500型错误
  10. 为什么电商越来越难做了?
  11. 潭州课堂25班:Ph201805201 第十二课 new方法,定制属性访问,描述符与装饰器 (课堂笔记)...
  12. 一个实现业务规则组合小框架
  13. FloatingActionButton
  14. 用计算机制作flash动画教案,最新最完整Flash动画制作教案.doc
  15. 安川机器人如何注释化指令_安川机器人指令一览
  16. 奔图打印linux驱动下载,奔图P3405D打印机驱动下载
  17. 蓝桥杯c语言程序题题库,蓝桥杯c语言试题
  18. 5G——万物互联新时代
  19. 大学计算机考试打字不及格,法考没过的人给你的忠告,2021年法考生必看
  20. 计算机学习计划范文,【计算机学习计划范文】

热门文章

  1. 【数字图像处理】色彩模型
  2. Java学习笔记:办公自动化简介及PDF文件分析
  3. 天龙八部服务器端共享内存的设计
  4. c语言————移位操作符讲解
  5. 等保测评三级——【安全物理环境】
  6. Markdown 教程:这一篇博客就让你学会制作高逼格的文档
  7. 怎么解决UG编程3D线加工还是曲面加工流道经常会过切
  8. AI教学实训整体解决方案
  9. 数据分析思维分析方法和业务知识——用数据分析解决问题
  10. 一个30岁男人对爱情婚姻的思考