使用python将最新的测试报告以附件的形式发到指定邮箱


Posted in Python onSeptember 20, 2019

具体代码如下所示:

import smtplib, email, os, time
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Header
#设置smtplib所需的参数
smtpserver = 'smtp.qq.com' #SMTP服务器地址
username = 'xxx@qq.com' # 发件人地址,通过控制台创建的发件人地址
password = '******' # 发件人密码,通过控制台创建的发件人密码
receiver = ['xxx@dadaodata.com'] #单个收件人
# receivers = ['xxx@dadaodata.com', 'xxx@qq.com'] # 收件人地址或是地址列表,支持多个收件人,最多30个
# 构造邮件MIMEMultipart对象
msg = MIMEMultipart('mixed')
msg['Subject'] = Header('自动化测试报告' + time.strftime("%Y-%m-%d"), 'utf-8').encode()#自定义邮件主题
msg['From'] = '%s <%s>' % (username, username)#邮件发送者
msg['To'] = ";".join(receiver)#邮件接受者
msg['Message-id'] = email.utils.make_msgid()
msg['Date'] = email.utils.formatdate()
# 构造文字内容
text_plain = MIMEText('附件为接口自动化测试报告,请查收!', 'plain', 'utf-8')#邮件内容
msg.attach(text_plain)
#构造附件
test_report = r'F:\PythonAutomation\Python_PyCharm\TestReport' #存放文件的目录
lists = os.listdir(test_report) #列出目录的下所有文件保存到lists
lists.sort(key=lambda fn:os.path.getmtime(test_report + "\\" + fn)) #按时间排序
file_new = os.path.join(test_report,lists[-1]) #获取最新的文件保存到file_new
sendfile = open(file_new,'rb').read()
text_att = MIMEText(sendfile, 'base64', 'utf-8')
text_att["Content-Type"] = 'application/octet-stream'
text_att["Content-Disposition"] = 'attachment; filename="report.html"'#重新命名附件
msg.attach(text_att)
# 发送邮件
try:
  # client = smtplib.SMTP()
  # client.connect(smtpserver, 25) #SMTP普通端口为25
  client = smtplib.SMTP_SSL() #python 2.7以上版本,若需要可使用SSL
  client.connect(smtpserver, 465) #SSL端口465
  # client.set_debuglevel(1) #用set_debuglevel(1)可以打印出和SMTP服务器交互的所有信息
  client.login(username, password)
  client.sendmail(username, receiver, msg.as_string())
  client.quit()
  print('邮件发送成功')
except smtplib.SMTPConnectError as e:
  print('邮件发送失败,连接失败:', e.smtp_code, e.smtp_error)
except smtplib.SMTPAuthenticationError as e:
  print('邮件发送失败,认证错误:', e.smtp_code, e.smtp_error)
except smtplib.SMTPSenderRefused as e:
  print('邮件发送失败,发件人被拒绝:', e.smtp_code, e.smtp_error)
except smtplib.SMTPRecipientsRefused as e:
  print('邮件发送失败,收件人被拒绝:', e.args, e.recipients)
except smtplib.SMTPDataError as e:
  print('邮件发送失败,数据接收拒绝:', e.smtp_code, e.smtp_error)
except smtplib.SMTPException as e:
  print('邮件发送失败: ', str(e))
except Exception as e:
  print('邮件发送失败: ', str(e))

执行结果如下:

使用python将最新的测试报告以附件的形式发到指定邮箱

总结

以上所述是小编给大家介绍的使用python将最新的测试报告以附件的形式发到指定邮箱,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python抓取豆瓣图片并自动保存示例学习
Jan 10 Python
Python外星人入侵游戏编程完整版
Mar 30 Python
pandas值替换方法
Jul 10 Python
pytorch 转换矩阵的维数位置方法
Dec 08 Python
Django对models里的objects的使用详解
Aug 17 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
Nov 29 Python
python中68个内置函数的总结与介绍
Feb 24 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
Jun 18 Python
关于python中导入文件到list的问题
Oct 31 Python
20行代码教你用python给证件照换底色的方法示例
Feb 05 Python
python Polars库的使用简介
Apr 21 Python
Python数据分析之绘图和可视化详解
Jun 02 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
Sep 20 #Python
Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析
Sep 20 #Python
Python 类属性与实例属性,类对象与实例对象用法分析
Sep 20 #Python
使用python脚本自动创建pip.ini配置文件代码实例
Sep 20 #Python
使用Python给头像戴上圣诞帽的图像操作过程解析
Sep 20 #Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
Sep 20 #Python
Python 50行爬虫抓取并处理图灵书目过程详解
Sep 20 #Python
You might like
php访问查询mysql数据的三种方法
2006/10/09 PHP
PHP与javascript的两种交互方式
2006/10/09 PHP
五个PHP程序员工具
2008/05/26 PHP
深入php函数file_get_contents超时处理的方法详解
2013/06/03 PHP
php微信公众平台开发(四)回复功能开发
2016/12/06 PHP
PHP7多线程搭建教程
2017/04/21 PHP
PHP编程获取图片的主色调的方法【基于Imagick扩展】
2017/08/02 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
Aster vs KG BO3 第一场2.18
2021/03/10 DOTA
根据一段代码浅谈Javascript闭包
2010/12/14 Javascript
基于jquery插件实现常见的幻灯片效果
2013/11/01 Javascript
jQuery探测位置的提示弹窗(toolTip box)详细解析
2013/11/14 Javascript
js网页实时倒计时精确到秒级
2014/02/10 Javascript
JavaScript+CSS无限极分类效果完整实现方法
2015/12/22 Javascript
jQuery表单验证简单示例
2016/10/17 Javascript
VueJs路由跳转——vue-router的使用详解
2017/01/10 Javascript
完美的js图片轮换效果
2017/02/05 Javascript
Web开发使用Angular实现用户密码强度判别的方法
2017/09/27 Javascript
详解vue 数据传递的方法
2018/04/19 Javascript
傻瓜式vuex语法糖kiss-vuex整理
2018/12/21 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
[05:42]DOTA2英雄梦之声_第10期_蝙蝠骑士
2014/06/21 DOTA
[02:23]2014DOTA2国际邀请赛中国战队回顾
2014/08/01 DOTA
Python操作SQLite简明教程
2014/07/10 Python
Python生成器(Generator)详解
2015/04/13 Python
python多行字符串拼接使用小括号的方法
2020/03/19 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
2019/06/04 Python
PyQt5组件读取参数的实例
2019/06/25 Python
python3.8下载及安装步骤详解
2020/01/15 Python
python使用Thread的setDaemon启动后台线程教程
2020/04/25 Python
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
西班牙床垫网上商店:Colchones.es
2018/05/06 全球购物
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
触摸春天教学反思
2014/02/03 职场文书
销售员个人求职的自我评价
2014/02/10 职场文书
导游词之丹东鸭绿江
2019/10/24 职场文书