zoukankan      html  css  js  c++  java
  • python 邮件发送

    各种邮件类型参考https://www.runoob.com/python/python-email.html

    import smtplib
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart
    from email.utils import  formataddr
    import os,sys
    import time
    from config.config import  reportpath
    reportPath = reportpath  # 测试报告的路径
    
    class SendEmail():
        def __init__(self):
            #第三方SMTP服务
            self.email_host = "smtp.exmail.qq.com"# 设置服务器
            self.send_user = "xx@qq.com"  # 登录邮箱的用户名
            self.password= "xxxxx"  # 授权码
    
        def get_report(self):# 该函数的作用是为了在测试报告的路径下找到最新的测试报告
            dirs = os.listdir(reportPath)
            dirs.sort()
            print("路径%s"%dirs)
            newreportname = dirs[0]
            print('The new report name: {0}'.format(newreportname))
            return newreportname  # 返回的是测试报告的名字
    
        def send_mail(self,user_list,sub,content):
            #创建一个带附件的实例
            message=MIMEMultipart()
            message['Subject']=sub#发送邮件主题
            message['From']=self.send_user#发送邮件用户
            message['To']=";".join(user_list)#发送对象
            newreport = self.get_report()#获取最新报告文件
            message['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')  # 将测试报告的内容放在 邮件的正文当中
            message.attach(html)  # 将html附加在msg里
            # html附件    下面是将测试报告放在附件中发送
            att1 = MIMEText(mailbody, 'base64', 'gb2312')
            att1["Content-Type"] = 'application/octet-stream'
            att1["Content-Disposition"] = 'attachment; filename="TestReport.html"'  # 这里的filename可以任意写,写什么名字,附件的名字就是什么
            message.attach(att1)
    
            # 异常处理
            try:
                #连接邮箱服务
                server=smtplib.SMTP()
                server.connect(self.email_host)
                server.login(self.send_user,self.password)
                server.sendmail(self.send_user,user_list,message.as_string())
                print("发送成功")
                server.close()
    
            except smtplib.SMTPException:
                print ("Error:无法发送邮件")
    
    
        def send_main(self,pass_list=[],fail_list=[]):
    
            pass_num=float(len(pass_list))
            fail_num=float(len(fail_list))
            count_num=pass_num +fail_num
            user_list = ['jenny.zhang@wetax.com.cn']
            sub = "接口自动化测试报告"
            content = "此次一共运行接口个数为%s个,通过个数为%s个,失败个数为%s" % (count_num, pass_num, fail_num)
            self.send_mail(user_list, sub, content)#调用发送邮件的方法
    
    
    if __name__=="__main__":#发送邮件包含成功与失败个数调试
        sen=SendEmail()
        user_list=["jenny.zhang@wetax.com.cn"]
        sub="接口自动化测试"
        content='hehheheheh'
        sen.send_mail(user_list,sub,content)
        
  • 相关阅读:
    不同数据类型在不同编译器下字节大小
    gbk/utf8/gb2312 编码中汉字字母数字所占字节数
    剑指Offer-12 矩阵中的路径
    螺旋矩阵(数组)问题(网易考点)
    C++ 多继承导致的指针偏移问题
    面试题--链表实现插入排序
    C++ 二叉树的深度优先遍历(前中后序)以及广度优先遍历
    (转)软连接和硬链接作用以及区别
    TCP/IP网络五层结构理解以及数据传输流程的理解图示
    常考知识点:进程与线程,多进程与多线程
  • 原文地址:https://www.cnblogs.com/xiaozeng6/p/10991982.html
Copyright © 2011-2022 走看看