python 邮件发送

Posted xiaozeng6

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 = "[email protected]"  # 登录邮箱的用户名
        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 = [[email protected]]
        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=["[email protected]"]
    sub="接口自动化测试"
    content=hehheheheh
    sen.send_mail(user_list,sub,content)
    

 

以上是关于python 邮件发送的主要内容,如果未能解决你的问题,请参考以下文章

超实用的php代码片段

Javascript - 使用 HTML 片段通过电子邮件发送 JSON 输出

Github 大牛封装 Python 代码,实现自动发送邮件只需三行代码

C#和ASP.NET通过Gmail账户发送邮件的代码

python笔记- 发送邮件

实现Python代码发送邮件