Python自动化测试发送邮件太麻烦?!一起聊一聊 Python 发送邮件的3种方式
1. 前言
发送邮件,我们在平时工作中经用到,做为测试人员,在自动化测试中用的也比较多,需要发送邮件给某领导
SMTP是Python默认的邮件模块,可以发送纯文本、富文本、HTML 等格式的邮件
今天我们来说一说Python 发送邮件的 3 种方式
2. 开启邮箱SMTP服务和获取授权码
登录 QQ 邮箱为例,我们需要开启 SMTP 服务,登录邮箱依次点击设置-账户

开启SMTP

然后,生成授权码

注:
需要开启POP3/SMTP服务
授权码做为邮箱密码
1. 方式一:smtplib
smtplib是 Python 自带的依赖库,可以直接导入使用,通过邮箱账号、授权码、邮箱服务器地址初始化一个 SMTP 实例,然后进行连接
初学者感觉这个会挺复杂,请继续往下看
1.1发送纯文本邮件

运行结果:

注:SMTP邮件个人不推荐使用,所以只演式一种发送纯文本邮件
2. 方式二:zmail
由于SMPT太过于麻烦复杂,所以就用zamil发送邮件试试。
zmail模块只支持Python3模块,该模块为第3方模块,需自行安装(pip install zmail)
使用 Zmail 发送接收邮件方便快捷,不需手动添加服务器地址、端口以及适合的协议,可以轻松创建 MIME 对象和头文件
注意:Zmail 仅支持 Python3,不支持 Python2
#!/usr/bin/python3 import zmail def send_mail():
# 定义邮件
mail = {"subject": "接口测试报告",# 任一填写
'content_text': '手机号归属地_API自动化测试报告',# 任一填写
# 多个附件使用列表
"attachments": "E:/report/result.html"
}
# 自定义服务器
server = zmail.server("发送人邮箱.com",
"QQ邮箱是用授权码",
smtp_host="smtp.qq.com",
smtp_port = 465)
# 发送邮件
server.send_mail("收件人QQ邮箱", mail) try:
send_mail()
except FileNotFoundError:
print("未找到文件")
else:
print("发送成功")
3. 方式三:yagmail
他们都说yagmail 只需要三行代码,就可以实现发送邮件,爽歪歪!
相比 zmail,yagmail 实现发送邮件的方式更加简洁优雅
首先,安装依赖库(pip install yagmail)
发送邮件有三个步骤:
1、连接服器(类似你先要登录邮箱)
2、编辑邮件内容和主题
3、发送邮件
#!/usr/bin/python3 import yagmail # 定义用户名、授权码、服务器地址且连接服务器 mail_server = yagmail.SMTP(user='发件人邮箱', passwd='授权码', host='smtp.qq.com') # 发送对象列表
Email_to = ['收件人邮箱']
subject = '任一填写'
Email_text = "任一填写内容"
# 多个附件用逗号隔开
attachments = ['html报告目录地址'] # 发送邮件
mail_server.send(Email_to, subject, Email_text, attachments)
最后
总结了 Python3种发送 邮件的方式,实际项目中,更推荐使用后两种方式
如果对软件测试、接口测试、自动化测试、技术同行、持续集成、面试经验交流。感兴趣可以进到893694563,群内会有不定期的分享测试资料。
如果文章对你有帮助,麻烦伸出发财小手点个赞,感谢您的支持,你的点赞是我持续更新的动力。
Python自动化测试发送邮件太麻烦?!一起聊一聊 Python 发送邮件的3种方式的更多相关文章
- python自动化测试(4)-使用第三方python库技术实现
python自动化测试(4)-使用第三方python库技术实现 1 概述 关于测试的方法论,都是建立在之前的文章里面提到的观点: 功能测试不建议做自动化 接口测试性价比最高 接口测试可以做自动化 ...
- 不吹不黑,今天我们来聊一聊 Kubernetes 落地的三种方式
作者 | 王国梁 Kubernetes 社区成员与项目维护者原文标题<Kubernetes 应用之道:让 Kubernetes落地的"三板斧">,首发于知乎专栏:进击 ...
- 论 Python Opencv 中文路径及中文文件名图像文件读取的两种方式
python 2中对于中文字符的处理可谓是诟病已久,虽然python 3 使用统一编码解决了中文字符串的问题,但在使用opencv中imread函数读取中文路径图像文件时仍会报错. 1) 借助nump ...
- Python菜鸟之路:Django 文件上传的几种方式
方式一:通过form表单中,html input 标签的“file”完成 # 前端代码uoload.html <form method="post" action=" ...
- Python与数据库 sqlalchemy 建立声明层表对象的两种方式
在对表对象进行建立的时候,通常有两种方式可以完成,以下是两种方式的建立过程对比 首先导入需要的模块,获取一个声明层 1 from sqlalchemy.sql.schema import Table, ...
- 【转载】Python中如何高效实现两个字典合并,三种方法比较。
本文转载自:http://www.pythoner.com/13.html Python中将两个字典进行合并操作,是一个比较常见的问题.本文将介绍几种实现两个字典合并的方案,并对其进行比较. 对于这个 ...
- 《自拍教程5》Python自动化测试学习思路
前提:熟悉测试业务及流程 任何Python自动化测试的前提,都是必须先熟悉实际测试业务. 任何脱离实际测试业务的自动化都是噱头且无实际意义! 测试的基本流程基本是: 测试需求分析,测试用例设计与评审, ...
- python自动化测试(2)-自动化基本技术原理
python自动化测试(2) 自动化基本技术原理 1 概述 在之前的文章里面提到过:做自动化的首要本领就是要会 透过现象看本质 ,落实到实际的IT工作中就是 透过界面看数据. 掌握上面的这样的本领 ...
- Python自动化测试(1)-自动化测试及基本技术手段概述
生产力概述 在如今以google为首的互联网时代,软件的开发和生产模式都已经发生了变化, 在<参与感>一书提到:某位从微软出来的工程师很困惑,微软在google还有facebook这些公司 ...
随机推荐
- C#基础知识---装箱与拆箱
一.定义 装箱:将值类型转化为引用类型,装箱一般会在堆上分配一块内存,用于存储要转换的值. 拆箱:将引用类型转化为值类型 注:.NET 2.0 引入的泛型其实在很大的程度上解决了装拆箱产生的类型转换问 ...
- C++ CLI简介(什么是C++ CLI)
要知道C++/CLI是什么,首先知道什么是CLI. 一.CLI简介 CLI:(Common Language Infrastructure,通用语言框架)提供了一套可执行代码和它所运行需要的虚拟执行环 ...
- 【OpenLayers】入门教程地址
[OpenLayers]入门教程地址: 点击进入 http://anzhihun.coding.me/ol3-primer/index.html 简书地址 : http://www.jians ...
- Java规范化代码eclipse模板注释
建议下载阿里规范化插件 阿里的new java file的注释模板(Type): /** * @author ${user} * @date ${currentDate:date('YYYY/MM ...
- Flink API
一.Flink API 1.DataSet:对静态数据进行批处理操作.将静态数据抽象成分布式数据集,使用Flink各种操作符处理数据,支持 Java .Scala.Python 2.DataStrea ...
- rabbitMq镜像集群
rabbitMq延迟投递的方案 1 把消息记录到数据路,通过定时器进行刷新 2 TTL 加上死信队列 :通过路由把过期的消息同步到死信队列,通过死信队列的消费者进行消费 3
- 关于通用Mapper new Example使用记录
关于通用MapperExample使用记录 环境准备 需要集成 mybatis 的 generator 插件,方便自动生成 实体类和 mapper 类,还可以生成xml,不过一般我们都不用 xml b ...
- vue 导出excel后端返回乱码下载不了的解析问题
有俩种方法可以用 第一种方法: 解析:直接解析并且下载后端的乱码 this.download('后端给的导出excel的方法', { ...this.queryParams }, ` ...
- Node.js 应用全链路追踪技术——[全链路信息获取]
全链路追踪技术的两个核心要素分别是 全链路信息获取 和 全链路信息存储展示. Node.js 应用也不例外,这里将分成两篇文章进行介绍:第一篇介绍 Node.js 应用全链路信息获取, 第二篇介绍 N ...
- JVM(一)类加载器与类加载过程
JVM是面试必面的一个知识点,也是高级程序员必备的一个技能.以下是JVM整体核心内容,包括类加载系统,运行时数据区内部结构,执行引擎,本地方法接口. 首先来学习类的加载器,虚拟机把描述类的数据从Cla ...