smtplib及yagmail实现邮件发送

SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,是一组由源地址到目的地址传送邮件的规则,可以控制信件的中转方式。Python的smtplib模块提供了简单的API用来实现发送邮件功能,它对SMTP进行了简单的封装。
在实现发送邮件功能之前,需要补充一个基础知识。在给其他人发送邮件之前,首先需要有一个自己的邮箱,通过浏览器打开邮箱网址(如www.126.com),或打开邮箱客户端(如Foxmail),登录自己的邮箱账号。如果是邮箱客户端,则还需要配置邮箱服务器地址(如smtp.126.com)。然后填写收件人地址、邮件的主题和正文,以及添加附件等。即便通过python实现发送邮件功能,也需要设置这些信息。

一、python自带的发送邮件功能

在发送邮件时,除填写主题和正文外,还可以增加抄送人、添加附件等。这里我们分别把测试报告作为正文和附件进行发送。
1.发送邮件正文

首先,调用email模块下面的MIMEText类,定义发送邮件的正文、格式,以及编码。

然后,调用email模块下面的Header类,定义邮件的主题和编码类型。
Smtplib模块用于发送邮件,connect()方法指定连接的邮箱服务,这里使用的是腾讯企业邮箱,若使用其他邮箱可自行查找对应的smtp服务器;login()方法指定登录邮箱的账号和密码;sendmail()方法指定发件人、收件人,以及邮件的正文;quit()方法用于关闭邮件服务器的连接。
登录收件人邮箱,可看到邮件内容如下图:

2.发送带附件的邮件

带附件的邮件要稍微复杂一些。
首先,读取附件的内容,通过MIMEText类,定义发送邮件的正文、格式、以及编码;
Content-Type指定邮件内容类型,application/octet-stream表示二进制流,Content-Disposition指定显示的文件,attachmentl;filename=”log.txt”指定附件的文件名。
然后,使用MIMEMultipart类定义邮件的主题,attach()指定附件信息。
最后,通过smtplib模块发送邮件,发送过程与上面那个例子相同。
带附件的邮件如图:

二、用yagmail发送邮件

yagmail是python的一个第三方库,可以让我们以非常简单的方式实现自动发送邮件功能。
通过pip命令安装:
pip install yagmail

如果想给多个用户发送邮件,那么只需把收件人放到一个list中即可

如果想发送带附件的邮件,那么只需指定本地附件的路径即可

三、自动发送邮件应用到实际项目中

整个程序的执行过程可分为两部分:

(1)定义测试报告文件,并赋值给变量html_report,通过HTMLTestRunner运行测试用例,将结果写入文件后关闭。
(2)调用send_mail函数,并传入html_report文件,在send_mail()函数中,把测试报告作为邮件的附件发送到指定邮箱。
具体内容如下图:

posted @ 2021-02-21 11:46  chanzjj  阅读(217)  评论(0)    收藏  举报