目录

前言

smtp授权

发送邮件

封装及应用

总结

重点:配套学习资料和视频教学


前言

​ SMTP(Simple Mail Transfer Protocol)也就是简单邮件传输协议,是一种提供可靠且有效电子邮件传输的协议。python的smtplib模块就提供了一种很方便的途径发送电子邮件,它对smtp协议进行了简单的封装。

​ python发邮件主要需要两个模块:smtplib和email,这两个模块是python自带的库,import即可使用。smtplib主要负责发送邮件,即一个发送邮件的动作,如连接邮箱服务器,登录邮箱,发送邮件。email主要负责构造邮件,指的是邮箱页面显示的一些构造,如发件人,收件人,主题,正文,附件等。

smtp授权

​ 上面已经说到发送邮件是基于smtp服务的,那么我们就需要一个可以登录smtp服务器的账号及授权码,这里以qq邮箱为例,登录qq邮箱后,在设置》账户这里就可以开启smtp,开启后发送短信获取授权码即可。

发送邮件

​ 涉及的部分参数说明:

  • 连接到smtp服务器:smtplib.SMTP_SSL(smtp服务器地址, 端口号)
  • 登录smtp服务器:smtp.login(smtp邮件地址, 登录smtp的授权码)
  • 构造邮件对象:MIMEMultipart()
  • 创建邮件内容:MIMEText(邮件内容, "plain", "utf8")两个参数文本类型,编码格式;如果要发送html格式的邮件内容,则把plain(默认)替换成html
  • 把相关内容添加到邮件:smg.attach(具体的内容),添加邮件内容
  • 设置邮件主题:smg["Subject"] = 主题内容
  • 设置邮件发件人:smg["From"] = 邮件地址
  • 设置邮件收件人:smg["To"] = 邮件地址
  • 发送邮件:smtp.send_message(邮件对象, from_addr=发件人邮件地址, to_addrs=收件人邮件地址)如果有多个收件人则用list格式传给to_addrs
  • 创建附件:MIMEApplication(附件内容)
  • 创建图片:MIMEImage(图片内容),与附件一样
  • 设置附件或图片等:file_msg.add_header(\_name, \_value, **\_params):扩展标题设置,_name为要添加的标题字段,_value为标题的值。msg.add_header('Content-ID', 'imgid') #设置图片IDmsg.add_header('Content-Disposition', 'attachment', filename='test.xlsx')#为附件添加一个标题msg.add_header('Content-Disposition', 'attachment', filename=('utf-8', '', '中文标题')) #添加非ASCII字符时需指定编码

python

import smtplib
from email.mime.text import MIMEText    # 创建文本内容的邮件内容
from email.mime.multipart import MIMEMultipart  # 创建带附件的实例
from email.mime.application import MIMEApplication  # 用于创建附件的
from email.mime.image import MIMEImage   # 用于创建图片,与添加附件一样的,下面不做举例# 第一步: 连接到smtp服务器
smtp = smtplib.SMTP_SSL("smtp.qq.com", 465)
smtp.login("xxxxxx@qq.com","afajccbab")# 第二步:构建邮件
smg = MIMEMultipart()
text_smg = MIMEText("这是邮件文本内容", "plain", "utf8") # 邮件内容
smg.attach(text_smg)    # 添加到邮件# 添加附件
file_msg = MIMEApplication(open(r"C:\project\test\reports\report.html","rb").read())
file_msg.add_header('content-disposition', 'attachment', filename='report.html')
smg.attach(file_msg)    # 添加到邮件smg["Subject"] = "测试测试" # 主题
smg["From"] = "aaaaaa@qq.com" # 邮件内显示的发件人
smg["To"] = "bbbbb@163.com" # 邮件内显示的收件人# 第三步发送邮件
smtp.send_message(smg, from_addr="aaaaaa@qq.com", to_addrs="bbbbb@163.com")

​ 还有更多的用法,有兴趣的可以再深入研究。

封装及应用

​ 下面是一个简单的封装例子,可以根据自己的需要优化,甚至可以把邮件的主题、发件人、收件人以及smtp的登录邮箱授权密码等提取出来放到配置文件来维护。

python

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplicationdef send_email(file_path):smtp = smtplib.SMTP_SSL("smtp.qq.com",465)smtp.login("xxxxx@qq.com","smtp登录密码")smg = MIMEMultipart()text_smg = MIMEText("这是邮件文本内容", "plain", "utf8")smg.attach(text_smg)file_msg = MIMEApplication(open(file_path,"rb").read())file_msg.add_header('content-disposition', 'attachment', filename='report.html')smg.attach(file_msg)smg["Subject"] = "测试报告"smg["From"] = "aaaaaa@qq.com"smg["To"] = "bbbbbbb@163.com"smtp.send_message(smg,from_addr="aaaaaa@qq.com",to_addrs="bbbbbbb@163.com")

​ 测试报告都是测试用例运行完之后才生成,那么我们就可以把发邮件这一步放到测试报告生成之后:

python

import unittest
import os
from common.contants import CASE_DIR, REPORT_DIR
from common.send_email import send_email# 第一步:创建测试套件
suite = unittest.TestSuite()# 第二步加载用例到套件
loader = unittest.TestLoader()
suite.addTest(loader.discover(CASE_DIR))report_path = os.path.join(REPORT_DIR, "report.html")
with open(report_path, "wb") as f:runner = HTMLTestRunner(stream=f,title="24期的测试报告",description="测试报告的描述信息。。。。。",tester="MuSen")# 运行测试套件runner.run(suite)# 执行完代码之后,发送报告
send_email(report_path)
  • 前言
  • smtp授权
  • 发送邮件
  • 封装及应用

总结

感谢每一个认真阅读我文章的人!!!

如果下面这些资料用得到的话可以直接拿走:

1、自学开发或者测试必备的完整项目源码与环境

2、测试工作中所有模板(测试计划、测试用例、测试报告等)

3、软件测试经典面试题

4、Python/Java自动化测试实战.pdf

5、Jmeter/postman接口测试全套视频获取

6、Python学习路线图

重点:配套学习资料和视频教学

那么在这里我也精心准备了上述大纲的详细资料包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。如下,需要的评论区留言或者私信我

python接口自动化之自动发送测试报告邮件相关推荐

  1. Python接口自动化之登录接口测试

    VOL 117 29 2020-04 今天距2020年246天 这是ITester软件测试小栈第117次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上  ...

  2. Python接口自动化之unittest单元测试

    ------·今天距2021年251天·------ 这是ITester软件测试小栈第115次推文 在上一篇Python接口自动化测试系列文章:Python接口自动化之requests请求封装,主要通 ...

  3. python 接口自动化unittest+DingtalkChatbot钉钉机器人消息封装

    python 接口自动化unittest+DingtalkChatbot机器人消息封装 安装DingtalkChatbot: pip install DingtalkChatbot 钉钉配置机器人: ...

  4. Linux部署python接口自动化教程,基于centos7 python3

    Linux部署python接口自动化教程 1.安装jenkins 2.安装插件和依赖 **安装allure插件(测试报告)** **配置allure依赖** 安装python3.x依赖环境 **安装p ...

  5. python接口自动化实战(框架)_python接口自动化框架实战

    python接口测试的原理,就不解释了,百度一大堆. 先看目录,可能这个框架比较简单,但是麻雀虽小五脏俱全. 各个文件夹下的文件如下: 一.理清思路 我这个自动化框架要实现什么 1.从excel里面提 ...

  6. python接口自动化基础框架结构 ——分层

    python接口自动化基础框架结构 --分层 --bin 用于存放启动文件,如run.py --cases cases目录,存放测试脚本 --data   YAML文件 --lib  存放各种附加的代 ...

  7. python接口自动化5-Json数据处理

    前言 有些post的请求参数是json格式的,这个前面第二篇post请求里面提到过,需要导入json模块处理. 一般常见的接口返回数据也是json格式的,我们在做判断时候,往往只需要提取其中几个关键的 ...

  8. python接口自动化-参数化

    原文地址https://www.cnblogs.com/yoyoketang/p/6891710.html python接口自动化 -参数关联(一)https://www.cnblogs.com/11 ...

  9. python接口自动化4-绕过验证码登录(cookie)

    前言 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接). 获取不到也没关系,可以通过添加cookie的方式绕过验证码. 一.抓登录coo ...

  10. python接口自动化关联参数_python接口自动化7-参数关联

    前言 我们用自动化发帖之后,要想接着对这篇帖子操作,那就需要用参数关联了,发帖之后会有一个帖子的id,获取到这个id,继续操作传这个帖子id就可以了 (博客园的登录机制已经变了,不能用账号和密码登录了 ...

最新文章

  1. 20分钟教你搞懂Git!
  2. 不懂编程可以自学python吗-python教程看完了,还是不会编程?
  3. 服务器mvc提示404错误信息,解决Spring MVC提示404错误找不到JSP问题
  4. Js函数function基础理解
  5. 设置RadioButton控件中文本的位置.
  6. python扫描app接口_[分享】python+requests对app和微信小程序进行接口测试
  7. Expanding Rods(二分)
  8. [转载] python 卷积_40 行 Python 代码,实现卷积特征可视化
  9. python正则表达式 多个条件的匹配
  10. 安装sphinx的心得和错误处理
  11. 已知X随机变量的情况下,求解Y=G(x)的概率分布函数(只考虑单调的情况)
  12. 平行平板多光束干涉matlab,平行平板的多光束干涉.ppt
  13. 家庭收支记账软件项目【Golang-面向过程】
  14. 【历史上的今天】2 月 11 日:首款 Ubuntu 手机问世;苹果的天使投资人诞生;电子工业联盟正式停运
  15. 打不开wifi是怎么回事 笔记本wifi无法开启
  16. 【CodeForces 1077E --- Thematic Contests】思维+贪心
  17. Windows10+MinGW+Codelite完成C++编写平台安装
  18. window版ELK搭建
  19. 一个大牛的acm历程(看着就要颤抖
  20. 网络流-最大流(Ford-Fulkerson算法Dinic算法)

热门文章

  1. 电镜的成像原理-透射电镜成像原理1
  2. PD协议诱骗取电XSP01支持Type-C 5V9V12V15V20V原理图
  3. 莫拉蒂和4个干儿子的情感
  4. JAVA实现负载均衡
  5. android手机连不上wifi密码,修改wifi密码后手机连不上_修改wifi密码后手机不能上网-192路由网...
  6. 什么是数字式射频信号发生器
  7. python拟合曲线_用python做曲线拟合
  8. 贪心算法解决雷达站建站问题
  9. html九九乘法口诀表代码,JavaScript九九乘法口诀表的简单实现
  10. 台式计算机不休眠,台式机如何设置不休眠