1. 程式人生 > >python - 自動化測試框架 - sendMail

python - 自動化測試框架 - sendMail

# -*- 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 = ['
[email protected]
']
# 163的使用者名稱和密碼
send_addr_name = '[email protected]'
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