py3发送使用QQ邮箱发送html附件

  • 来源:新网
  • 更新日期:2018-03-13

摘要:from email.mime.text import  MIMEText import smtplib from email.mime.multipart import  MIMEMultipart from email.utils import  formataddr import os import time reportPath = \'C:Logslogs\' class

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()
 
 
如有更优化内容,请多多指点