zoukankan      html  css  js  c++  java
  • 自动化测试常用脚本-发送邮件

    #用于发送测试报告(带附件)或其它内容
    
    # -*- coding:utf-8 -*-
    import os
    import smtplib
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart
    
    
    class SendEmail(object):
        def __init__(self, receivers):
            mail_host = "127.0.0.1"  # SMTP服务器
            mail_user = "username"  # 用户名
            mail_pass = "password"  # 密码
            sender = "123456@qq.com"  # 发件人邮箱
            file_path = os.path.dirname(os.path.dirname(__file__)) + '\report\test_result.html'  # 拼接测试报告的路径
            title = '自动化测试结果'  # 邮件主题
            mail_body = "查看测试报告请下载附件!!!"
            message = MIMEMultipart()
            message['From'] = "{}".format(sender)  # 从哪发出邮件 
            message['To'] = ",".join(receivers)    # receivers:接收人邮箱地址
            message['Subject'] = title  # 标题
            msgtext = MIMEText(mail_body, _subtype='plain', _charset='utf-8')  # 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
            message.attach(msgtext)  # 添加主邮件主体内容
            # 添加一个HTML文本附件
            ff = open(file_path, 'rb')
            att = MIMEText(ff.read(), 'base64', 'utf-8')
            # 附件设置内容类型,设置为二进制流
            att["Content-Type"] = 'application/octet-stream'
            # 设置附件头,添加文件名,filename 可以随意写
            att["Content-Disposition"] = 'attachment; filename="test_result.html"'
            # 解决中文附件名乱码问题
            # att.add_header('Content-Disposition', 'attachment', filename=('utf-8', '', basename))
            message.attach(att)
            ff.close()
            try:
                smtpObj = smtplib.SMTP(mail_host, 25)  # 25 是指定 SMTP 服务使用的端口号,默认 25
           """SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
           python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。
           """
                smtpObj.login(mail_user, mail_pass)  # 登陆邮箱
                smtpObj.sendmail(sender, receivers, message.as_string())  # 发送邮件(发信人,收件人,邮件内容),这里需要注意邮件内容的格式,这个格式就是 smtp 协议中定义的格式
                print("邮件已成功发送")
                smtpObj.quit()
            except smtplib.SMTPException as e:
                print(e)
    
    
    if __name__ == "__main__":
        SendEmail(["123456@qq.com", "123467@qq.com"])
    您对以上内容有何建议或意见,请写下来告诉我,谢谢!!!
  • 相关阅读:
    scrapy_redis对接布隆过滤器(Bloom Filter)
    Python-Scrapy shell 带头部headers请求
    postgres数据库入门, python 操作postgres
    Windows下安装MySQL详细教程
    在读取文件中出现ufeff,解决 ufeff的问题
    scrapy中主动停止爬虫
    Scrapy 中Filtered offsite request to 'www.sohu.com':报错的解决方法
    win10系统谷歌插件此扩展程序可能已损坏的解决方法
    如何将已经安装从chrome扩展程序导出备份为.CRX文件?
    PAC模式和全局模式的区别
  • 原文地址:https://www.cnblogs.com/chenri/p/11365640.html
Copyright © 2011-2022 走看看