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 = '[email protected]'
        password = 'XXXXX' #此处是授权码,不是邮箱密码
        sender = '[email protected]'
        #可添加多个收件人的邮箱
        receives = ['[email protected]','[email protected]']
        #构造邮件对象
        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)

猜你喜欢

转载自blog.csdn.net/qsmy_an/article/details/126640414
今日推荐