小序一下
- 公司最近学习氛围真好,功能性测试慢慢也开始转向,自动化测试了,并且一段时间做的是有模有样的,在这里还是给他们点72个👍即使他们看不见。呵呵,记录一个有意思的事情,证明我们还活着。
- 爱生活,爱钻研,爱分享,这次是帮助测试实现一个小功能,也就是自动测试完成后生成的测试报告,自动群发公司内部人员
- 下面进入正题,本次分享是一个很小的功能,不过其中还是有些坑的。
上干货
import smtplib,sys,re
from email import encoders
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
def sendMs():
smtpserver = 'smtp.163.com'
username = 'xxxx' #用户名
password = 'xxx' #密码 这里的密码不是163.com 的登录密码而是,在设置里的授权密码
msgRoot = MIMEMultipart('related')
subject = '这是邮件内容'
msgRoot['Subject'] = subject
sender = 'zyjian@163.com' # 发件人
#收件人,这里是用的 “,” 把多个接收邮箱拼接起来
receiver = '2394142087@qq.com,719307805@qq.com'
receiver_list = receiver.split(',')
msgRoot['From'] = sender #之前没有写From和To,发送邮件出现554错误
#注意:这里接收的是 多个收件人 字符串类型
msgRoot['To'] = receiver
# 添加附件就是加上一个MIMEBase,从本地读取一个图片:
with open('./form.html', 'rb') as f:
# 设置附件的MIME和文件名,这里是png类型:
mime = MIMEBase('html', 'png', filename='test.html')
# 加上必要的头信息:
mime.add_header('Content-Disposition', 'attachment', filename='test.html')
mime.add_header('Content-ID', '<0>')
mime.add_header('X-Attachment-Id', '0')
# 把附件的内容读进来:
mime.set_payload(f.read())
# 用Base64编码:
encoders.encode_base64(mime)
# 添加到MIMEMultipart:
msgRoot.attach(mime)
smtp = smtplib.SMTP()
smtp.connect('smtp.163.com')
smtp.login(username, password)
#注意:这里接收的是 多个收件人 数组类型
smtp.sendmail(sender, receiver_list, msgRoot.as_string())
smtp.quit()
print("发送完毕")
if __name__ == '__main__':
sendMs()
- 代码量很少,但是有些地方还是需要注意的,代码中我也做了注释
-
代码中的密码,是授权密码,这里我列举的是163邮箱,获取授权密码的步骤
image.png - 此种方式,创建邮件对象,不会报状态 554:垃圾邮件错误
- 附件也可增加多个
-
注意
4.1这里接收的是 多个收件人 字符串类型
msgRoot['To'] = receiver
4.2 这里接收的是 多个收件人 数组类型
smtp.sendmail(sender, receiver_list, msgRoot.as_string())
网友评论