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

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:\Logs\logs'
class SendEmail:

    def get_report(self):#该函数作用是为了在测试报告的路径下找到最新的测试报告
        dirs = os.listdir(reportPath)#返回文件下的文件名、文件夹的列表
        dirs.sort()
        newreportname = dirs[-1]
        print('The new report name:{0}'.format(newreportname))
        return newreportname

    def take_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')

        with open(os.path.join(reportPath,newreport),'rb') as f:
            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添加到正文内容
    def send(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('sendemail success')
if __name__ == '__main__':
    sendMail = SendEmail()
    sendMail.send() 



如有更优化内容,请多多指点


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值