python利用smtplib模块发送邮件
通常在自动化过程中,我们希望在脚本运行完成后自动发送测试结果邮件给相关领导和负责人,python自带发送邮件模块:smtplib,今天我们来了解一下如何利用smtplib完成这个过程,以qq邮箱为例
在此附上代码:
1 import smtplib 2 import time 3 from email.mime.multipart import MIMEMultipart 4 from email.mime.text import MIMEText 5 from email.mime.application import MIMEApplication 6 from common import project_path 7 8 #邮件发送的用户名和密码 常识:第三方授权码 9 _user = "xxx@qq.com" 10 _pwd = "xxxx" 11 12 now = time.strftime('%Y-%m-%d_%H_%M_%S')#获取时间戳 13 14 class sendEmail: 15 def send_email(self,email_to,filepath): 16 #email_to 收件方 17 #filepath 你要发送附件的地址 18 #如名字所示Multipart就是分多个部分 19 msg = MIMEMultipart() 20 msg["Subject"] = now+"Elaine的测试报告" 21 msg["From"] = _user 22 msg["To"] = email_to 23 24 #---这是文字部分--- 25 part = MIMEText("这次是自动化测试结果,请查收!") 26 msg.attach(part) 27 28 #---这是附件部分--- 29 part = MIMEApplication(open(filepath,'rb').read()) 30 part.add_header('Content-Disposition', 'attachment', filename=filepath) 31 msg.attach(part) 32 # s = smtplib.SMTP_SSL("smtp.qq.com", timeout=30)#连接smtp邮件服务器,端口默认是25 33 s=smtplib.SMTP("smtp.qq.com", 25) 34 s.ehlo() 35 s.login(_user, _pwd)#登陆服务器 36 s.sendmail(_user, email_to, msg.as_string())#发送邮件 37 s.close() 38 39 if __name__ == '__main__': 40 sendEmail().send_email("1067110652@qq.com",project_path.report_path)
需要注意的点是:
第三方客户端登陆QQ邮箱需要开启POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,登陆邮箱密码为第三方授权码,具体步骤:登陆qq邮箱--设置--帐户安全--开启服务--点击生成授权码--接收短信
见截图