SMTP自动发送邮件功能代码

SMTP自动发送邮件功能

我也是跟着各种博客一步一步搜索出来的,可能在设置邮箱的时候会有各种问题,请参考我的其他博客进行设置

https://blog.csdn.net/ly021499/article/details/82423019

https://blog.csdn.net/ly021499/article/details/80943030

以下代码集成了生成测试报告和自动发送邮件等功能,使用了新的测试报告模版,个人认为美观一点,另附下载链接

链接:https://pan.baidu.com/s/1kwh7nAdc-vC0NbEK4PfODA 
提取码:j77w 

#-*- coding: utf-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import BSTestRunner        # 注意此处我所使用的是BSTestRunner,博客附下载链接
import unittest
import time
import os

'''
                              _(\_/) 
                             ,((((^`\
                            ((((  (6 \ 
                          ,((((( ,    \
      ,,,_              ,(((((  /"._  ,`,
     ((((\\ ,...       ,((((   /    `-.-'
     )))  ;'    `"'"'""((((   (      
    (((  /            (((      \
     )) |                      |
    ((  |        .       '     |
    ))  \     _ '      `t   ,.')
    (   |   y;- -,-""'"-.\   \/  
    )   / ./  ) /         `\  \
       |./   ( (           / /'
       ||     \\          //'|
       ||      \\       _//'||
       ||       ))     |_/  ||
       \_\     |_/          ||
       `'"                  \_\
                            `'"
'''


# ✎﹏₯㎕﹍﹍ 定义发送邮件 ζั͡ޓއއއ๓º
def send_mail(new_file):
    # 发信邮箱
    sender = Sender
    # 收信邮箱
    receiver = Receiver
    # 打开邮件
    efile = open(new_file, 'rb')
    email_body = efile.read()
    efile.close()
    # 实例化一个带附件的示例
    message = MIMEMultipart()
    # 定义邮件正文内容
    message.attach(MIMEText(email_body, _subtype='html', _charset='utf-8'))

    # 定义抬头
    message['From'] = Sender
    message['To'] = Receiver
    # 定义邮件主题
    message['Subject'] = EmailTitle
    # 定义发送时间(不定义的可能有的邮件客户端会不显示发送时间)
    message['date'] = time.strftime('%a, %d %b %Y %H:%M:%S %z')

    att = MIMEText(email_body, _subtype='base64', _charset='utf-8')
    # 构造附件,传送当前目录下的 test.txt 文件
    att["Content-Type"] = 'application/octet-stream'
    # 这里的filename可以任意写,写什么名字,邮件中显示什么名字
    att["Content-Disposition"] = 'attachment; filename=%s' %AttName
    message.attach(att)

    # 连接SMTP服务器
    smtp = smtplib.SMTP()
    smtp.connect(SMTP)

    # 用户名密码
    smtp.login(Sender, EmailPassword)
    smtp.sendmail(sender, receiver, message.as_string())
    smtp.quit()

    print('✎biubiubiu ₯㎕~~~  导弹发射成功,颤抖吧!愚蠢的人类 ޓއއއ ')

# ✎﹏₯㎕﹍﹍ 查找最新生成的测试报告文件 ζั͡ޓއއއ๓º
def send_report(testreport):
    result_dir = testreport
    lists = os.listdir(result_dir)
    lists.sort(key=lambda fn: os.path.getmtime(result_dir + "\\" + fn))
    print (u'最新的导弹已制成,即将进入发射程序: '+lists[-1])

    # 找到最新生成的文件
    new_file = os.path.join(result_dir, lists[-1])
    print(new_file)

    #调用发邮件模块
    send_mail(new_file)

# ✎﹏₯㎕﹍﹍ 将用例添加到测试套件 ζั͡ޓއއއ๓º
def creatsuite():
    testunit = unittest.TestSuite()

    # 定义测试文件查找的目录
    testcase_path = TestCasePath

    # 定义 discover 方法的参数
    discover = unittest.defaultTestLoader.discover(testcase_path, pattern='test*.py',top_level_dir=None)
    # discover 方法筛选出来的用例,循环添加到测试套件中
    for test_case in discover:
        print(test_case)
        testunit.addTests(test_case)

    return testunit

def main():
    now = time.strftime("%Y-%m-%d %H_%M")
    # 报告存储的路径
    report_path = ReportPath
    # 构建文件完整路径
    filename = report_path + ReportName + now + '.html'
    # 打开报告文件
    file = open(filename, 'wb')
    # 设置报告头部信息
    runner = BSTestRunner.BSTestRunner(stream=file, title=Title,
                                       description=Description)
    # 拿到测试套件并运行
    all_test_case = creatsuite()
    runner.run(all_test_case)
    # 关闭生成的报告
    file.close()
    # 发送报告
    send_report(ReportPath)

if __name__ == '__main__':
    # 设置发信邮箱
    Sender = '[email protected]'       # 发信邮箱账号
    # 设置收信邮箱
    Receiver= '[email protected]'    # 收信邮箱密码
    # 设置发信邮箱密码
    EmailPassword = 'xxxxxxx'    # 此处填写你在邮箱生成的客户端专用密码
    # 设置邮件标题
    EmailTitle = u"自动化测试报告"
    # 设置邮件正文内容
    BodyContent = '此邮件为执行自动化脚本后自动发送邮件,请勿回复!'
    # 设置邮件附件名称
    AttName = "TestReport.html"
    # 设置testCase存储路径
    TestCasePath = os.path.dirname(os.path.abspath('.')) + '\\testcase'
    # 设置SMTP服务器-(现在用的QQ邮箱服务器)
    SMTP = "smtp.exmail.qq.com"
    # 设置报告的名字
    ReportName = 'TestReport '
    # 设置报告存储的路径
    ReportPath = os.path.dirname(os.path.abspath('.')) + '\\reports\\'
    # 设置报告主题
    Title = u'Big data platform'
    # 设置报告描述内容
    Description = u'This is the automation test report of the big data platform for reference only.'
    # 调用main()方法启动程序
    main()



猜你喜欢

转载自blog.csdn.net/ly021499/article/details/82910667