fromemail.mime.textimportMIMEText
importsmtplib
fromemail.mime.multipartimportMIMEMultipart
fromemail.utilsimportformataddr
importos
importtime
reportPath=\'C:Logslogs\'
classSendEmail:
defget_report(self):#该函数作用是为了在测试报告的路径下找到最新的测试报告
dirs=os.listdir(reportPath)#返回文件下的文件名、文件夹的列表
dirs.sort()
newreportname=dirs[-1]
print(\'Thenewreportname:{0}\'.format(newreportname))
returnnewreportname
deftake_message(self):#该函数目的是为了准备发送邮件的消息内容
newreport=self.get_report()
self.msg=MIMEMultipart()#创建一个附件实例
self.msg[\'Subject\']=\'xxx接口测试用例报告\'#邮件标题
self.msg[\'date\']=time.strftime(\'%a,%d%b%Y%H:%M:%S%z\')
withopen(os.path.join(reportPath,newreport),\'rb\')asf:
mailbody=f.read()
#html=MIMEText(mailbody,_subtype=\'html\',_charset=\'utf-8\')
#self.msg.attach(html)#html附加在msg里 打开html文件,并显示在邮件正文当中
#html附件下面是将测试报告放到附件中发送
email_text=MIMEText(\'测试报告\')
att1=MIMEText(mailbody,\'base64\',\'utf-8\')
att1[\'Content-Type\']=\'application/octet-stream\'
att1[\'Content-Disposition\']=\'attachment;filename=%s\'%newreport #filename为文件名,发送为什么就写什么
self.msg.attach(att1) #将html文件作为附件添加到邮件当中
self.msg.attach(email_text) #将email_text添加到正文内容
defsend(self):
my_email=\'xxxxx@qq.com\' #QQ账号
my_pass=\'xxxxx\' #QQ授权码
send_email=\'xxx@qq.com\'# #如果接收者为163邮箱,可能会存在正文内容为txt文件
self.take_message()
self.msg[\'from\']=formataddr([\'xx测试\',my_email]) #将邮箱名称以化名进行显示 方便领导知道邮件来源
self.msg[\'to\']=formataddr([\'J\',send_email])
smtp=smtplib.SMTP_SSL(\'smtp.qq.com\',465) #QQ邮箱服务以及端口
smtp.ehlo()
smtp.login(my_email,my_pass) # 进行登录QQ邮箱
smtp.sendmail(my_email,[send_email],self.msg.as_string())
#括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件操作
#由于sendemail要传String类型,所以要用.as_string()把内容组合成字符串
smtp.quit() #关闭连接
print(\'sendemailsuccess\')
if__name__==\'__main__\':
sendMail=SendEmail()
sendMail.send()
如有更优化内容,请多多指点