def send_email_with_attachment(content, header, file_path,rev_addr_lst, host= Config.DefaultConfig().Email.Domain, username= Config.DefaultConfig().Email.Sender, password= Config.DefaultConfig().Email.Password, sender_addr= Config.DefaultConfig().Email.Sender ) : """ @author: eason.sun @content:邮件发送的主要内容 @header:邮件发送的头部 @file_path:附件在本地的路径 @username:邮件发件人账号 @password:邮件发件人账号密码 @sender_addr:邮件发送时,发件人显示地址 @rev_addr_lst:收件人列表 @return None @summary: 用于发送邮件内容,内容只带有一个附件 """ smtp = smtplib.SMTP() smtp.connect(host) smtp.login(username, password) main_msg = email.MIMEMultipart.MIMEMultipart() main_msg["Subject"] = Header(header, "utf-8") text_msg = email.MIMEText.MIMEText(content, _subtype = "html", _charset = "utf-8") main_msg.attach(text_msg) file_attach = MIMEApplication(open(file_path,'rb').read()) file_attach.add_header('Content-Disposition', 'attachment', filename=os.path.basename(file_path)) main_msg.attach(file_attach) try: smtp.sendmail(sender_addr, rev_addr_lst, main_msg.as_string()) finally: smtp.quit()
def send_email(content, header, rev_addr_lst, host= Config.DefaultConfig().Email.Domain, username= Config.DefaultConfig().Email.Sender, password= Config.DefaultConfig().Email.Password, sender_addr= Config.DefaultConfig().Email.Sender ): """ @author: eason.sun @content:邮件发送的主要内容 @header:邮件发送的头部 @username:邮件发件人账号 @password:邮件发件人账号密码 @sender_addr:邮件发送时,发件人显示地址 @rev_addr_lst:收件人列表 @return: None @summary: 用于发送邮件内容,内容仅限文本内容 """ send_msg = MIMEText(content, _subtype = "html", _charset = "utf-8") send_msg["Subject"] = Header(header, "utf-8") smtp = smtplib.SMTP() smtp.connect(host) smtp.login(username, password) smtp.sendmail(sender_addr, rev_addr_lst, send_msg.as_string()) smtp.quit()
def nose_run(parser): Config.nose_set("verbosity", parser.verbosity) Config.nose_set("logging-config", Dir.log_config_path()) # 通过关键字筛选出来的用例列表 tests = FileHelper.tests_filter_from_dir(Dir.testcases_root_dir(), parser.select, parser.priority) Config.nose_set("where", Dir.testcases_root_dir()) if len(tests): for i in xrange(parser.loop): # 生成的报表每个名称都不一样,以时间为区分 nosexml = Dir.nose_result_path( ) + "wy_autotest_" + Datetime.now_str() + ".xml" Config.nose_set("tests", ",".join(tests)) Config.nose_set("xunit-file", nosexml) Logger.info("正在第{0}/{1}次进行Nose测试".format(i + 1, parser.loop)) Logger.info("执行Nose命令:{0}".format(Config.nose_cmd())) # 切换当前路径为工程根目录 os.chdir(Dir.project_root_dir()) os.system("nosetests") #发送邮件 result_summary = Result.test_result_summary(nosexml) result_detail = Result.test_result_detail(nosexml) rev_addr_lst = [ "*****@*****.**", "*****@*****.**", "*****@*****.**" ] Mail.send_email_with_attachment( result_summary + result_detail, Config.DefaultConfig().Email.Subject, nosexml, rev_addr_lst) Logger.info("完成第{0}/{1}次进行Nose测试".format(i + 1, parser.loop)) else: Logger.info("抱歉,没有符合条件的执行测试用例!")
def send_email_with_attachments(content, header, file_paths, host= Config.DefaultConfig().Email.Domain, username= Config.DefaultConfig().Email.Sender, password= Config.DefaultConfig().Email.Password, sender_addr= Config.DefaultConfig().Email.Sender, rev_addr_lst= Config.DefaultConfig().Email.Receiver ) : """ @author: eason.sun @content:邮件发送的主要内容 @header:邮件发送的头部 @file_paths:附件列表在本地的路径 @username:邮件发件人账号 @password:邮件发件人账号密码 @sender_addr:邮件发送时,发件人显示地址 @rev_addr_lst:收件人列表 @return: None @summary: 用于发送邮件内容,内容带有多个附件 """ msg = MIMEMultipart() msg["Subject"] = Header(header, "utf-8") part = MIMEText(content, _subtype = "html", _charset = "utf-8") msg.attach(part) # 添加附件 for file_path in file_paths: part = MIMEApplication(open(file_path,'rb').read()) part["Content-Type"] = 'application/octet-stream;name=”%s”' % Header(os.path.basename(file_path), 'utf-8') part["Content-Disposition"] = 'attachment;filename= %s' % Header(os.path.basename(file_path), 'utf-8') msg.attach(part) try: s = smtplib.SMTP(host) s.login(username, password) s.sendmail(sender_addr, rev_addr_lst, msg.as_string()) finally: s.close()