# -*- coding:utf-8 -*- ''' @project: Voctest @author: Jimmy @file: sendMail.py @ide: PyCharm Community Edition @time: 2018-11-15 17:14 @blog: https://www.cnblogs.com/gotesting/ ''' import os import smtplib import time from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from Common.log import Log from Config.globalConfig import report_path logger = Log() # 配置收发件人 recv_address = ['641969198@qq.com'] # 163的用户名和密码 send_addr_name = 'jxy641969198@163.com' send_addr_pswd = 'jiaxy19920319' class SendMail: def __init__(self, recver=None): """接收邮件的人:list or tuple""" if recver is None: self.sendTo = recv_address else: self.sendTo = recver def get_report(self): """获取最新测试报告""" lists = os.listdir(report_path) lists.sort() send_report = lists[-1] print('The send report name: {0}'.format(send_report)) return send_report def take_messages(self): """生成邮件的内容,和html报告附件""" report = self.get_report() self.msg = MIMEMultipart() self.msg['Subject'] = 'VOC自动化测试报告' self.msg['date'] = time.strftime('%a, %d %b %Y %H:%M:%S %z') with open(os.path.join(report_path, report), 'rb') as f: mailbody = f.read() html = MIMEText(mailbody, _subtype='html', _charset='utf-8') self.msg.attach(html) # html附件 att1 = MIMEText(mailbody, 'base64', 'gb2312') att1["Content-Type"] = 'application/octet-stream' att1["Content-Disposition"] = 'attachment; filename="VocAutoTestReport.html"' self.msg.attach(att1) def send(self): """发送邮件""" self.take_messages() self.msg['from'] = send_addr_name try: smtp = smtplib.SMTP('smtp.163.com', 25) smtp.login(send_addr_name, send_addr_pswd) smtp.sendmail(self.msg['from'], self.sendTo, self.msg.as_string()) smtp.close() logger.log_info("发送邮件成功") except Exception: logger.log_error('发送邮件失败') raise