python如何实现发送邮件(Python自动发送4种形式的邮件)(1)

python如何实现发送邮件(Python自动发送4种形式的邮件)(2)

点击上方头像关注我,每周上午 09:00准时推送,每月不定期赠送技术书籍。后台回复“资源”、“测试工具包”领取测试资源。

本文4180字,阅读约需11分钟

Hi,大家好。自动化测试过程中,一般测试结果都会以邮件的形式发送给相关人员,在Python中,如何通过编写代码将邮件发送给对应的接收人呢?

发送邮件有不同的形式,比如:文本、HTML、txt附件、图片附件等,如何通过Python操作的呢?今天我们一起来实现Python自动发送这4种形式的邮件。

Python发送邮件介绍

01 实现思路

使用脚本发送邮件的思路其实和使用客户端发送邮件一样,过程都是:登录邮箱-> 写邮件 -> 发送。只不过通过脚本发送时我们需要考虑到整个过程的细节,以下为实现思路的思维导图:

python如何实现发送邮件(Python自动发送4种形式的邮件)(3)

02 Python email模块

发送邮件相关的 Python 模块:

举个简单的例子,当你登录邮箱,写好邮件后点击发送,这部分是由 SMTP 接管;而写邮件、添加附件是由 email 模块控制。

开通电子邮箱的SMTP服务

SMTP中文名是简单邮件传输协议,可以传输系统之间的邮件信息。是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。

使用SMTP,可实现相同网络处理进程之间的邮件传输,也可通过中继器或网关实现某处理进程与其他网络之间的邮件传输

在使用Python脚本发送邮件之前,我们需要开通自己邮箱的 SMTP 功能。以下分别介绍QQ邮箱和163邮箱开启SMTP服务,任选其中一种即可,更多邮箱的开通方式可以自行百度。

01 QQ邮箱开启SMTP服务

我们以QQ邮箱为例,需要发送邮件,必须首先开启SMTP服务。

①登录QQ邮箱,点击设置,选择账号。

python如何实现发送邮件(Python自动发送4种形式的邮件)(4)

②将POP3/SMTP服务点击为已开启状态,并生成授权码,授权码一般为16位。

python如何实现发送邮件(Python自动发送4种形式的邮件)(5)

按照以上步骤,QQ邮箱的SMTP服务就开启好了。

02 163邮箱开启SMTP服务

163邮箱开启SMTP服务也非常简单,点击设置,将POP3/SMTP服务点击为已开启状态即可。

python如何实现发送邮件(Python自动发送4种形式的邮件)(6)

发送4种形式的邮件

接下来正式开始编写发送用Python发送纯文本邮件、HTML邮件、带txt附件的邮件以及带图片的附件这4种形式的邮件。

首先新建一个Python文件编写代码,进行属性配置。

python如何实现发送邮件(Python自动发送4种形式的邮件)(7)

若为QQ邮箱,则服务端为smtp.qq.com,若为163邮箱,则服务端为smtp.163.com,其他邮箱可自行百度查询。

发送文本邮件

首先,我们先发送一封简单的文本邮件,小试牛刀一把。

(1) 导包

(2) 编写代码

编写的完整代码如下:

# 需要使用到SMTPLIB库来进行邮箱的连接 import smtplib # 处理邮件内容的库,email.mine from email.mime.text import MIMEText # 邮箱属性配置 # 邮箱服务端 mailserver = 'smtp.qq.com' # 发件人-填写自己的邮箱 userName_SendMail = 'ITester@qq.com' # 邮箱发件授权码-为发件人生成的授权码 userName_AuthCode = '授权码' # 定义邮件的接收者-我随便写的,若收件人较多,可用列表表示 received_mail = ['xxxx@qq.com','xxxxx@qq.com'] # 发送一封简单的邮件,处理邮件内容 content = '这是一封纯粹的文本信息内容!来自ITester软测试小栈的CoCo' # 纯文本形式的邮件内容的定义,通过MIMEText进行操作,plain为默认的文本的展示形式 email = MIMEText(content, 'plain', 'utf-8') email['Subject'] = '这是邮件的主题-By ITester软测试小栈' # 定义邮件主题 email['From'] = userName_SendMail # 发件人 email['To'] = ','.join(received_mail) # 收件人(可以添加多个,若只有一个收件人,可直接写邮箱号) # 发送邮件 # QQ邮箱的端口号是465,其他邮箱的端口号可自行百度,非QQ邮箱,一般使用SMTP即可,不需要有SSL smtp = smtplib.SMTP_SSL(mailserver, port=465) smtp.login(userName_SendMail, userName_AuthCode) smtp.sendmail(userName_SendMail, ','.join(received_mail), email.as_string()) smtp.quit() print('恭喜,邮件发送成功了')

注意,以上代码需要替换成自己的授权码以及换成对应的QQ邮箱号。

运行代码后,收件人在邮箱可以查看接收到的邮件:

python如何实现发送邮件(Python自动发送4种形式的邮件)(8)

02 发送HTML邮件

发送其他形式的邮件与以上代码类似,邮箱的属性配置和发送邮件部分不发生变化,只需修改对于邮件内容的处理部分。

发送HTML邮件只需要将MIMEText(content, 'plain', 'utf-8')改为 MIMEText(content, 'HTML', 'utf-8'),plain为默认的文本的展示形式。

代码编写如下所示:

#------发送HTML形式的邮件------# # 需要使用到SMTPLIB库来进行邮箱的连接 import smtplib # 处理邮件内容的库,email.mine from email.mime.text import MIMEText # 邮箱属性配置 # 邮箱服务端 mailserver = 'smtp.qq.com' # 发件人-填写自己的邮箱 userName_SendMail = 'ITester@qq.com' # 邮箱发件授权码-为发件人生成的授权码 userName_AuthCode = '授权码' # 定义邮件的接收者-我随便写的,若收件人较多,可用列表表示 received_mail = ['xxxx@qq.com','xxxxx@qq.com'] # 发送一封HTML内容的邮件 content = """ <p>这是一封HTML文本的邮件,来自ITester软测试小栈的CoCo。</p> <p><a href="http://www.baidu.com">点击这里进入百度</a></p> """ email = MIMEText(content, 'HTML', 'utf-8') email['Subject'] = '这是HTML邮件的主题-By ITester软测试小栈' # 定义邮件主题 email['From'] = userName_SendMail # 发件人 email['To'] = ','.join(received_mail) # 收件人 # 发送邮件 # QQ邮箱的端口号是465,其他邮箱的端口号可自行百度,非QQ邮箱,一般使用SMTP即可,不需要有SSL smtp = smtplib.SMTP_SSL(mailserver, port=465) smtp.login(userName_SendMail, userName_AuthCode) smtp.sendmail(userName_SendMail, ','.join(received_mail), email.as_string()) smtp.quit() print('恭喜,邮件发送成功了')

运行代码后,收件人在邮箱可以查看接收到的邮件。

03 发送带txt附件的邮件

发送带txt附件的邮件,邮箱发送形式改为email = MIMEMultipart(),并对发送的附件进行处理,处理邮件附件需要导入MIMEMultipart,Header,MIMEBase。

(1) 导包

需要导入的包如下所示:

from email.mime.multipart import MIMEMultipart from email.header import Header from email.mime.base import MIMEBase

(2) 编写代码

发送带txt附件的邮件,编写代码如下所示:

python如何实现发送邮件(Python自动发送4种形式的邮件)(9)

运行代码后,收件人在邮箱可以查看接收到的邮件:

python如何实现发送邮件(Python自动发送4种形式的邮件)(10)

04 发送带图片附件的邮件

邮件的 HTML 文本中一般邮件服务商添加外链是无效的,添加图片的实例如下所示:

python如何实现发送邮件(Python自动发送4种形式的邮件)(11)

运行代码后,收件人在邮箱可以查看接收到的邮件:

python如何实现发送邮件(Python自动发送4种形式的邮件)(12)

最后,将以上4种发送邮件的方式封装成函数,send_email.py部分代码如下所示:

python如何实现发送邮件(Python自动发送4种形式的邮件)(13)

如需获取send_email.py的全部代码,可以在ITester软件测试小栈的后台回复"发送邮件"四个字进行领取喔。

python如何实现发送邮件(Python自动发送4种形式的邮件)(14)

以上就是Python 发送4种形式邮件的介绍,希望对大家有所帮助,也希望大家多多留言、点赞、在看、转发四连爱❤️ 支持。咱们下篇文章见,Bye~

更多系列文章

敬请期待


我是CoCo,计算机科学与技术专业,深漂大厂互联网民工(女),ITester软件测试小栈(ID:ITestingA),专注于软件测试技术和宝藏干货分享,每周准时更新原创技术文章,每月不定期赠送技术书籍,愿我们在更高处相逢。喜欢记得星标⭐我,每周及时获得最新推送,第三方转载请注明出处。

python如何实现发送邮件(Python自动发送4种形式的邮件)(15)

python如何实现发送邮件(Python自动发送4种形式的邮件)(16)

想获取更多最新干货内容

快来星标 置顶 关注

python如何实现发送邮件(Python自动发送4种形式的邮件)(17)

,