# -*- coding: utf-8 -*- ''' @author: Administrator ''' import os import smtplib from smtplib import SMTP from email.mime.text import MIMEText from email.header import Header from email.mime.multipart import MIMEMultipart from readConfig import * PATH = lambda p: os.path.abspath( os.path.join(os.path.dirname(__file__), p) ) def send_mail(file_new): conf = Readconfig() # 发送邮箱服务器 smtpserver=conf.getemailValue('smtpserver') sender = conf.getemailValue('sender') to_addr_in = conf.getemailValue('receiver') to_addr = to_addr_in to_addrs = to_addr.split(',') # 发送邮箱用户信息 username = conf.getemailValue('username') password = conf.getemailValue('password') f = open(file_new) #读取测试报告正文 # mail_body=u"中转场装卸模块自动化测试报告,请查收!" mail_body = f.read() f.close() #通过 模块构造的带附件的邮件如图 msg = MIMEMultipart() #编写html类型的邮件正文,MIMEtext()用于定义邮件正文 #发送正文 text = MIMEText(mail_body,'html','utf-8') text['Subject'] = Header('自动化测试报告', 'utf-8') msg.attach(text) #发送附件 #Header()用于定义邮件标题 msg['Subject'] = Header('丰驰app自动化测试报告', 'utf-8') msg_file = MIMEText(mail_body, 'html', 'utf-8') msg_file['Content-Type'] = 'application/octet-stream' msg_file["Content-Disposition"] = 'attachment; filename="Ui_Test_Report.html"' msg.attach(msg_file) msg['from'] = sender # 发送邮件的人 # msg['to'] = receiver msg['to'] = ",".join(to_addrs) smtp = smtplib.SMTP() smtp.connect(smtpserver) smtp.login(username, password) # 登录的用户名和密码 smtp.sendmail(msg['from'], to_addrs, msg.as_string()) # 发送邮件 smtp.quit() print('sendmail success') def getfile(dir_fiile): allFileNum = 0 baseUrl=dir_fiile list = os.listdir(baseUrl) filelist = [] for i in range(0, len(list)): #遍历 path = os.path.join(baseUrl,list[i]) allFileNum = allFileNum + 1 if os.path.isfile(path): filelist.append(list[i]) else: pass return filelist[-2] # dir_fiile="../report/" # file=dir_fiile+getfile(dir_fiile) # send_mail(file) if __name__ == '__main__': file="report.html" send_mail(file)
readConfig 的代码:
#coding=utf-8 import os import configparser import codecs # 获取配置文件所在路径 # prjDir =os.path.abspath(os.path.dirname(os.path.dirname(__file__)))+"\lib" # configfile_path = os.path.join(prjDir, "config.ini").replace('\','/') class Readconfig: def __init__(self): f = open("config.ini") data = f.read() self.conf = configparser.ConfigParser() self.conf.read("config.ini") def getConfigValue(self,name): value = self.conf.get('config',name) return value def getcmdValue(self,name): value = self.conf.get('cmd',name) return value def getemailValue(self,name): value = self.conf.get('email',name) return value if __name__ == '__main__': pass # conf=Readconfig() # print conf.getcmdValue("viewPhone")
config.ini文件内容如下:
[config] deviceName = Android platformName=Android automationName=Appium appPackage=com.sf.bulktransit appActivity=com.sf.bulktransit.view.act.MainActivity [cmd] openAppium=node /Applications/Appium.app/Contents/Resources/node_modules/appium/bin/appium.js stopAppium=pkill node startServer=adb statr-server closeServer=adb kill-server checkPhone=adb get-state viewPhone=adb devices viewAndroid=adb shell grep ro.build.version.release /system/build.prop [email] smtpserver=hqmail.qq.com username=11111 password=123456 sender=111@qq.com receiver=111@qq.com,222@qq.com