Python实现将测试结果报告打包发送邮件

测试执行结束后通常会将测试结果发送邮件给相关人员。我们先来了解下python对于发送邮件这件事的一些相关知识:SMTP是发送邮件的协议。Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。 Python对SMTP支持有 smtplib 和 email 两个模块,email 负责构造邮件,smtplib 负责发送邮件,下面来详解一下这两个模块:

email模块负责构造邮件

email模块下的mime模块下有常用的三个模块,三个模块中有三个大类:MIMEText,MIMEImage,MIMEMultipart。

简单说下他们的关系,如果构造一个MIMEText对象,就表示一个文本邮件对象,如果构造一个MIMEImage对象,就表示一个作为附件的图片对象,要把多个对象组合起来,就用MIMEMultipart对象,他代表的是整个邮件。以下例举一个实现构造邮件,邮件内容需要包含正文和附件,具体实现:


msg = MIMEMultipart(_charset='utf-8')

msg['From'] = Header("{}".format(self.my_sender),'utf-8')  # 括号里的对应发件人邮箱账号

msg['To'] = Header("{}".format(to),'utf-8')  # 收件人邮箱账号

msg['Subject'] = Header(subject,'utf-8')  # 邮件主题

# 邮件正文内容,content为正文的内容

html = MIMEText(content, 'html', 'utf-8')  

msg.attach(html)

# 邮件附件,zip_file为要上传的附件文件,“report.zip” 为附件在邮件中的展示名称,可自定义

att = MIMEText(open(zip_file,'rb').read(),'base64','utf-8')

att["Content-Type"] ='application/octet-stream'

att["Content-Disposition"] ='attachment; filename="report.zip"'

msg.attach(att)


smtplib模块负责发送邮件

构建完邮件内容后,我们就需要发送邮件了,发送邮件分为几个步骤:

1.创建SMTP的操作对象并连接smtp目标服务器

2.登录目标服务器

3.调用对象中的方法,发送邮件到目标地址

4.关闭连接

具体实现:


server = smtplib.SMTP_SSL("smtp.163.com", 465)  # 发件人邮箱中的SMTP服务器

server.login(self.my_sender, self.my_pass)  # 括号中对应的是发件人邮箱账号、邮箱授权码,授权码是需要登录邮箱到设置中进行开启SMTP服务再添加的

server.sendmail(self.my_sender, rcpt, msg.as_string())# 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件的内容

server.quit()


以上是解决方案思路,再具体的实现大家可以自行到项目中进行组装

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容