Python+pytest邮件发送测试报告,附件添加测试报告,邮件正文显示测试报告内容

发送邮件测试报告,这个可以直接复制粘贴代码,都通用。

我这个文件里还有其他的代码,导入的包比较多,单说发邮件的话,只导入邮件相关的几个就可以了。

# -- coding: utf-8 --
import smtplib
import time
from email import encoders
from email.header import Header
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.application import MIMEApplication
from utilpackage.parse_ini_element_locator import *
from utilpackage.dir import *
import importlib
import sys
importlib.reload(sys)
from datetime import datetime
import os
import yaml
import smtplib

class Email():
    def send_email(self,file_path):
        #param file_path  report.html 路径
        smtpserver = 'smtp.163.com'
        #设置登录邮箱的账号和授权密码
        user = 'XXXXX@163.com'
        password = 'XXXXX' #此处是授权码,不是邮箱密码
        sender = 'XXXXX@163.com'
        #可添加多个收件人的邮箱
        receives = ['XXXXX@XXX.com','XXXXX@qq.com']
        #构造邮件对象
        msg = MIMEMultipart('mixed')
        #定义邮件的标题
        subject = '自动化测试报告'
        #HTML邮件正文,定义成字典
        msg['Subject'] = Header(subject,"utf-8")
        msg['From'] = sender
        msg['To'] = ','.join(receives) #这里注意,直接用receivers是不行的会报错
        #构造文字内容
        text_plain = MIMEText("附件是最新自动化测试报告,请查看!",'html','utf-8')
        msg.attach(text_plain)

        #构造附件
        f = open(file_path,'rb')
        mail_body = f.read()
        f.close()
        text_attr = MIMEText(mail_body,'base64','utf-8')
        text_attr["Content-type"] = 'application/octet-stream'
        text_attr['Content-Disposition'] = 'attachment; filename = "test_report.html"'
        msg.attach(text_attr)
        with open(os.path.join(
            "D:\AutoProject\ZhongTouKeXinSmartPropertySystem","test_report.html"),
        'rb') as f:
            mail_body = f.read() #读取测试报告的内容
        #将测试报告的内容放在邮件的正文当中
        html = MIMEText(mail_body,_subtype='html',_charset='utf-8')
        #将html附加在msg里
        msg.attach(html)
        #print(mail_body)

        #邮箱设置时勾选了SSL加密连接,进行防垃圾邮件,SSL协议端口号要使用465
        smtp = smtplib.SMTP_SSL(smtpserver,465)
        #向服务器标识用户身份
        smtp.helo(smtpserver)
        #向服务器返回确认结果
        smtp.ehlo(smtpserver)
        #登录邮箱的账号和授权密码
        smtp.login(user,password)

        print("开始发送邮件...")
        #开始进行邮件的发送,msg表示已定义的字典
        smtp.sendmail(sender,receives,msg.as_string())
        smtp.quit()
        print("已发送邮件")


if __name__ == '__main__':
    e = Email()
    report = "./test_report.html"
    e.send_email(report)

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值