一、原理
python的smtplib通过对smtp协议进行简单封装,SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式
二、相关包介绍
a) 基本用到的包
b) 关于附件部分:
三、发送邮件流程
- 使用smtplib实现登录,需要进入邮箱获取邮箱对应得授权码、账户名以及对应得端口号,实现登录:
import smtplib
def send_mail():
server=smtplib.SMTP_SSL('smtp.qq.com',465)#qq邮箱及端口号
server.login('账号名','授权码')
- 编写邮件,构造邮件得发送人、收件人、邮件内容,附件等
a)
def take_maessage(self):
self.msg=MIMEMultipart()#构造带有附件得邮件对象
#构建头部
self.msg['Subject']=Header('接口自动化测试报告')
#正文
content = """
附件为本次测试报告,请注意查收!
"""
self.msg.attach(MIMEText(content,'plain','utf-8'))#将正文内容添加进邮件
# 构造附件
# 读取附件内容,再使用MIMEText进行规范化
attachment = MIMEText(open('./report/index.html').read(), 'base64','utf-8')
# 告知浏览器或邮件服务器这是字节流,浏览器处理字节流的默认方式为下载
attachment['Content-Type'] = 'application/octet-stream'
# 这个文件名不要用中文,不同邮箱对中文的对待形式不同
attachment['Content-Disposition'] = 'attachment;filename="TestReport.html"' # 这里的filename可以任意写,写什么名字,附件的名字就是什么
self.msg.attach(attachment)
三、发送邮件:
self.take_maessage()
self.msg['From']=Sendmail.sender # 收件人和发送人必须这里定义一下,执行才不会报错。
self.msg['To']=Sendmail.reciver
server.sendmail(self.msg['From'],self.msg['To'],self.msg.as_string())#发送邮件
server.close()
print('sendmail success')