终于到这里了,在我们执行完自动化脚本后生成测试报告文件,并且将测试报告文件自动打包后,后面就需要将测试报告压缩包发送出去,网上呢可以关于python实现自动发送邮件的文章很多,这里博主要吐槽一下其实绝大多数都是错的,引人入坑哈哈哈哈,
python有两个内置库,smtplib和email,能够实现邮件功能,smtplib库负责发送邮件,emali负责构建邮件内容,我们在发送邮件时需要遵从SMTP协议,python内置对SMTP可以支持发送纯文本文件,HTML格式邮件和带有附件的邮件,其实我们平时在使用过程中也大概只会用到这些功能。
from email.mime.text import MIMEText #构造文本
from email.mime.multipart import MIMEMultipart #负责将多个对象集合起来
import smtplib
from email.header import Header
class Send_mail():
def sendmail(self):
catlog = '定义传送附件地址'
smtpserver = 'smtp.qq.com' #定义smtp服务器这里使用的是qq邮箱
user = '******@qq.com' #发送邮箱
# 发送邮箱
# sender = '*****@qq.com'
mail_receivers = '******' #发送邮箱授权码,具体这么获取博主后面会详细介绍
# 接受邮箱
receiver = '********@qq.com'
# 创建一个带附件的实例
message = MIMEMultipart()
message['From'] = "sender_name<*****@qq.com>" #发件人信息
message['To'] = "receiver_1_name<*****@qq.com>" #收件人信息
subject = 'Python fhsy test' #邮件标题
message['Subject'] = Header(subject, 'utf-8')
# 邮件正文内容
message.attach(MIMEText('这是测试Python发送附件功能....', 'plain', 'utf-8'))
# 构造附件1,传送当前目录下的zip文件
att1 = MIMEText(open(catlog ,'rb').read(), 'base64', 'utf-8')
att1['Content-Type'] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字 邮件中就显示什么名字
att1['Content-Disposition'] = 'attachment;filename="casehtml.zip"' #发送附件的后缀类型
message.attach(att1)
smtp = smtplib.SMTP()
smtp.connect(smtpserver,25) #传入发件人的域名和端口
smtp.login(user,mail_receivers) #登录邮箱传入用户名与授权码
smtp.sendmail(user, receiver, message.as_string()) #发送邮件,参数:发件人地址、收件人地址、将邮件格式设置为str
print('邮件发送成功')
smtp.quit() #关闭smtp对象
如何设置邮箱授权码呢,这里以qq邮箱为例。
1.打开邮件,点击设置按钮。
2.点击账户,下翻到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务这里。
3.点击开启POP3/SMTP服务
4.点击后会弹出验证保密,根据提示发送信息即可,发送完后别忘了点击已发送啊,最后页面就会展示授权码了。