【05_发送测试报告到邮箱】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

05_发送测试报告到邮箱

  • 1、获取邮箱授权码
  • 2、构造附件
  • 3、发送邮件
  • 4、完整示例


测试报告生成后,可以将报告发送至开发、测试邮箱,以便查看测试报告详情,本文将演示如何将生成的html测试报告、excel 文件作为附件发送到指定邮箱

1、获取邮箱授权码

以QQ邮箱为例:登录–>账号与安全–>安全设置–>生成授权码,如下:在这里插入图片描述


2、构造附件

构造html附件

    #  构造发送邮件的附件
    html_file = open(html_path,'rb').read()  # 为html文件的路径
    # 构造附件1:html格式
    attachments_html = MIMEText(html_file,'base64','utf-8')
    attachments_html['Content-Type'] = 'application/octet-stream'
    attachments_html['Content-Disposition'] = 'attachment; filename = "test_report.html"' #filename是指下载的附件的命名

构造xlsx附件

    # 构造附件2: xlsx格式
    xlsx_file = open(xlsx_path, 'rb').read()
    attachments_xlsx=MIMEText(xlsx_file,'base64','utf-8')      #读取本地xlsx,路径用/不要\
    attachments_xlsx["content_Type"]='application/octet-stream'
    attachments_xlsx.add_header('Content-Disposition', 'attachment', filename='excel.xlsx')

3、发送邮件

import  smtplib
from  email.mime.text import MIMEText
from  email.mime.multipart import MIMEMultipart

#第三方SMTP服务
    smtp_server = 'smtp.qq.com' #设置qq服务器
    smtp_port = 25 #设置qq服务器端口号
    sender = '156XXXX@qq.com' #用户名 & 发送者邮箱
    smtp_authorization_code = 'test1111' #,密码(步骤1中获得的授权码)
    receiver = ['123333333@qq.com']  #接受者邮箱
    msg = MIMEMultipart()
    msg['Subject'] = emial_subject #定义邮件主题
    msg.attach(MIMEText('Python 邮件发送测试报告……', 'plain', 'utf-8')) # 邮件正文
    msg['From'] = sender
    msg['To'] = ', '.join(receiver)

    msg.attach(attachments_html) #添加html附件
    msg.attach(attachments_xlsx) #新增xlsx附件

    try:
        # 开启发信服务,这里使用的是非加密传输
        server = smtplib.SMTP(smtp_server, smtp_port)
        # 登录发信邮箱
        server.login(sender, smtp_authorization_code)
        # 发送邮件
        server.sendmail(sender, receiver, msg.as_string())  # 发送方,所有收件人(包含抄送者),之前message构建的邮件信息
        # 关闭服务器
        server.quit()
        print("邮件发送成功")
    except smtplib.SMTPException as e:
        print('邮件发送失败{e}')

4、完整示例

import  smtplib
from  email.mime.text import MIMEText
from  email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage


def send_email(emial_subject,html_path,xlsx_path,receivers):
    r"""
    发送邮件
    :param emial_title: 邮件标题
    :param html_path: 附件1:html路径
    :param xlsx_path: 附件2:xlsx 路径
    :param receivers: 收件人邮箱列表,eg:['11111@qq.com','222@qq.com']
    :return: None
    """

    #  构造发送邮件的附件
    html_file = open(html_path,'rb').read()
    # 构造附件1:html格式
    attachments_html = MIMEText(html_file,'base64','utf-8')
    attachments_html['Content-Type'] = 'application/octet-stream'
    attachments_html['Content-Disposition'] = 'attachment; filename = "test_report.html"' #filename是指下载的附件的命名

    # 构造附件2: xlsx格式
    xlsx_file = open(xlsx_path, 'rb').read()
    attachments_xlsx=MIMEText(xlsx_file,'base64','utf-8')      #读取本地xlsx,路径用/不要\
    attachments_xlsx["content_Type"]='application/octet-stream'
    attachments_xlsx.add_header('Content-Disposition', 'attachment', filename='excel.xlsx')

    # # 构造附件3,图片格式
    # msgImage = MIMEImage(open('test.png', 'rb').read())
    # msgImage.add_header('Content-ID', '<image1>')
    # msgImage.add_header('Content-Disposition', 'attachment', filename='test.png')
    #
    # # 构造附件4  txt格式
    # att4 = MIMEText(open('./test.txt', 'rb').read(), 'base64', 'utf-8')
    # att4["Content-Type"] = 'application/octet-stream'
    # att4["Content-Disposition"] = 'attachment; filename="test.txt"'
    #


    smtp_server = 'smtp.qq.com' #设置qq服务器
    smtp_port = 25 #设置qq服务器端口号
    sender = '156XXXX@qq.com' #用户名 & 发送者邮箱
    smtp_authorization_code = 'test1111' #,密码(步骤1中获得的授权码)
    receiver = ['123333333@qq.com']  #接受者邮箱
    msg = MIMEMultipart()
    msg['Subject'] = emial_subject #定义邮件主题
    msg.attach(MIMEText('Python 邮件发送测试报告……', 'plain', 'utf-8')) # 邮件正文
    msg['From'] = sender
    msg['To'] = ', '.join(receiver)

    msg.attach(attachments_html) #添加html附件
    msg.attach(attachments_xlsx) #新增xlsx附件

    try:
        # 开启发信服务,这里使用的是非加密传输
        server = smtplib.SMTP(smtp_server, smtp_port)
        # 登录发信邮箱
        server.login(sender, smtp_authorization_code)
        # 发送邮件
        server.sendmail(sender, receiver, msg.as_string())  # 发送方,所有收件人(包含抄送者),之前message构建的邮件信息
        # 关闭服务器
        server.quit()
        print("邮件发送成功")
    except smtplib.SMTPException as e:
        print('邮件发送失败{e}')


if __name__ == "__main__":
    send_email("接口自动化测试","report.html","1.xlsx",['reverver112@163.com'])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/372266.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

爬虫实战--爬取简单文字图片并保存到mongodb数据库

文章目录 前言发现宝藏 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#xff0c;方便日后回顾。当然&#xff0c;如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚&#xff0c;文章中如果有记录错误&#xff0c;欢迎读者朋友们…

基于ESP8266 开发板(MCU)遥控小车

遥控小车 ​ 遥控界面 ​ 【项目源码】 第一版ESP8266 https://github.com/liyinchigithub/esp8266_car_webServerhttps://github.com/liyinchigithub/esp8266_car_webServer 第二版ESP32 GitHub - liyinchigithub/esp32-wroom-car: 嵌入式单片机 ESP32 Arduino 遥控小车&a…

《Python 网络爬虫简易速速上手小册》第7章:如何绕过反爬虫技术?(2024 最新版)

文章目录 7.1 识别和应对 CAPTCHA7.1.1 重点基础知识讲解7.1.2 重点案例&#xff1a;使用Tesseract OCR识别简单CAPTCHA7.1.3 拓展案例 1&#xff1a;使用深度学习模型识别复杂CAPTCHA7.1.4 拓展案例 2&#xff1a;集成第三方 CAPTCHA 解决服务 7.2 IP 轮换与代理的使用7.2.1 重…

荣获双强认证!玻色量子荣登投资界2023Venture50新芽榜数字科技50强

2024年1月16日&#xff0c;由清科创业&#xff08;1945.HK&#xff09;、投资界发起的2023Venture50评选结果成功揭晓&#xff01;此次评选包含风云榜与新芽榜TOP50&#xff0c;以及五大行业榜单。玻色量子作为量子计算领军企业&#xff0c;荣登新芽榜50强与数字科技50强双强榜…

如何将pdf转换成ppt?掌握这个方法就简单多了

有时候&#xff0c;PDF文件的布局和设计可能需要进行微调或重新排版&#xff0c;以适应PPT的特定格式和风格。那么怎么pdf怎么转ppt呢&#xff1f;为了更方便地对布局、字体、图像和其他元素进行编辑和调整&#xff0c;以符合PPT的需求&#xff0c;我们可以直接通过pdf在线转pp…

zabbix server/agent源码编译成rpm包(通用版-小白教程)

前言 工作环境需要用到很多信创的操作系统&#xff0c;zabbix agent2的官方没有现成的包可用&#xff0c;网上巴拉了一下找到zabbix agent2通用版编译成rpm包的方法 思路&#xff1a;假如当你有一批ky10_x86的机器需要配套的zabbix agent的rpm包&#xff0c;那就找一台ky10_x…

【Linux】linux自动化构建工具make/makefile

linux自动化构建工具make/makefile 一&#xff0c;makefile是什么二&#xff0c;如何写makefile三&#xff0c;文件的三个时间属性四&#xff0c;makefile的推导 一&#xff0c;makefile是什么 对于make和makefile&#xff0c;简单来说&#xff0c;make是一个命令&#xff0c;用…

全网第一篇把Nacos配置中心服务端讲明白的

入口 getServerConfig对应&#xff1a;ConfigQueryRequestHandler&#xfffd;getBatchServiceConfig对应&#xff1a;ConfigChangeBatchListenResponse&#xfffd;admin对应&#xff1a;ConfigController 我们重点就要2个&#xff0c;一个是服务端如何完成客户端获取配置请…

Springboot简单设计两级缓存

两级缓存相比单纯使用远程缓存&#xff0c;具有什么优势呢&#xff1f; 本地缓存基于本地环境的内存&#xff0c;访问速度非常快&#xff0c;对于一些变更频率低、实时性要求低的数据&#xff0c;可以放在本地缓存中&#xff0c;提升访问速度 使用本地缓存能够减少和Redis类的远…

你知道网页采集工具吗?

一、网页采集器的定义和作用 网页采集器是一种自动化工具,用于从互联网上获取信息并将其保存到本地或远程数据库中。其作用在于帮助用户快速、自动地收集并整理网络上的信息,提高工作效率并且节省时间成本。网页采集器通过模拟人工浏览网页的行为,访问并提取目标网页的数据…

L1-037 A除以B-java

输入样例1&#xff1a; -1 2输出样例1&#xff1a; -1/2-0.50输入样例2&#xff1a; 1 -3输出样例2&#xff1a; 1/(-3)-0.33输入样例3&#xff1a; 5 0输出样例3&#xff1a; 5/0Error java import java.util.*; class Main{public static void main(String[] args){Sc…

机器学习中常用的性能度量—— ROC 和 AUC

什么是泛化能力&#xff1f; 通常我们用泛化能力来评判一个模型的好坏&#xff0c;通俗的说&#xff0c;泛化能力是指一个机器学期算法对新样本&#xff08;即模型没有见过的样本&#xff09;的举一反三的能力&#xff0c;也就是学以致用的能力。 举个例子&#xff0c;高三的…

BUUCTF-Real-[ThinkPHP]IN SQL INJECTION

目录 漏洞描述 漏洞分析 漏洞复现 漏洞描述 漏洞发现时间&#xff1a; 2018-09-04 CVE 参考&#xff1a;CVE-2018-16385 最高严重级别&#xff1a;低风险 受影响的系统&#xff1a;ThinkPHP < 5.1.23 漏洞描述&#xff1a; ThinkPHP是一款快速、兼容、简单的轻量级国产P…

Stable Diffusion 模型下载:ReV Animated

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十下载地址模型介绍 该模型能够创建 2.5D 类图像生成。此模型是检查点合并,这意味着它是其他模型的产物,以创建从原始模型派生的产品。 条目内容类型大模型

游戏视频录制软件推荐,打造专业电竞视频(3款)

随着游戏产业的快速发展&#xff0c;越来越多的玩家开始关注游戏视频录制软件。一款好的录制软件不仅可以帮助玩家记录游戏中的精彩瞬间&#xff0c;还可以让其与他人分享自己的游戏体验。接下来&#xff0c;我们将介绍三款热门的游戏视频录制软件&#xff0c;并对其进行详细的…

pwn学习笔记(2)

pwn学习笔记&#xff08;2&#xff09; 1.三种常见的寄存器&#xff1a; ​ ax寄存器&#xff1a;通用寄存器&#xff0c;可用于存放多种数据 ​ bp寄存器&#xff1a;存放的是栈帧的栈底地址 ​ sp寄存器&#xff1a;存放的是栈顶的地址 2.栈帧与栈工作的简介&#xff1a…

arping交叉编译

arping命令依赖libpcap和libnet&#xff0c;需要先交叉编译这两个库。 1.交叉编译libpcap 下载libpcap源文件&#xff0c;从github上克隆: git clone https://github.com/the-tcpdump-group/libpcap.git source交叉编译环境 # environment-setup是本机的交叉编译环境, 里面…

Centos7配置登录失败处理导致root被锁定处理办法

1、应用场景 root用户被系统锁定&#xff0c;无法登录系统。 2、问题现象 root锁定无法登录系统 3、原因 设置登录失败处理并对root用户生效&#xff0c;一直尝试错误的root密码或暴力破解root密码&#xff0c;导致无法自动解锁Linux的root账户 4、解决方案 1.将虚拟机开…

0 代码自动化测试:RF 框架实现企业级 UI 自动化测试

前言 现在大家去找工作&#xff0c;反馈回来的基本上自动化测试都是刚需&#xff01;没有自动化测试技能&#xff0c;纯手工测试基本没有什么市场。 但是很多人怕代码&#xff0c;觉得自动化测试就需要代码&#xff01;代码学习起来很难&#xff01; 当然代码学习不难&#xf…

重生奇迹MU如何挂机

1、重生奇迹MU觉醒哪里挂机经验多挂机收益最大化&#xff0c;在重生奇迹MU中玩家可以通过副本获得大量的经验和金币&#xff0c;甚至挂机也有不错的收益&#xff0c;对于玩家来说 2、卡利玛神庙、血色城堡、迷失之城、恶魔广场甚至是挂机自动刷怪&#xff0c;组队都会有经验加…