1. import smtplib
  2. from email.mime.text import MIMEText
  3. from email.mime.multipart import MIMEMultipart
  4. from HTMLTestRunner import HTMLTestRunner
  5. from email.header import Header
  6. import unittest
  7. import time,os
  8.  
  9. #==============定义发送邮件 ===============
  10.  
  11. def send_mail(file_new):
  12. f = open(file_new,'rb')
  13. #读取测试报告正文
  14. mail_body = f.read()
  15. f.close()
  16. # 发送邮箱服务器
  17. smtpserver = "smtp.wondershare.cn"
  18. # 发件人邮箱
  19. sender = 'buyer_1291455767_per@wondershare.cn'
  20. # 发件人邮箱密码
  21. password = 'Hello789'
  22. # 接收人邮箱
  23. receiver = ['jiangyf@wondershare.cn','buyer_1291455767_per@wondershare.cn']
  24.  
  25. #通过 模块构造的带附件的邮件如图
  26. msg = MIMEMultipart()
  27. #编写html类型的邮件正文,MIMEtext()用于定义邮件正文
  28. #发送正文
  29. text = MIMEText(mail_body, 'html', 'utf-8')
  30. text['Subject'] = Header('自动化测试报告', 'utf-8')
  31. msg.attach(text)
  32. #发送附件
  33. #Header()用于定义邮件标题
  34. msg['Subject'] = Header('自动化测试报告', 'utf-8')
  35. msg_file = MIMEText(mail_body, 'html', 'utf-8')
  36. msg_file['Content-Type'] = 'application/octet-stream'
  37. msg_file["Content-Disposition"] = 'attachment; filename="TestReport.html"'
  38. msg.attach(msg_file)
  39.  
  40. # 如果只发正文的话,上面的代码 从receiver下面到这段注释上面
  41. # 全部替换为下面的两行代码即可,上面的代码是增加了发送附件的功能。
  42. # text = MIMEText(mail_body, 'html', 'utf-8')
  43. # text['Subject'] = Header('自动化测试报告', 'utf-8')
  44.  
  45. smtp = smtplib.SMTP()
  46. smtp.connect(smtpserver)
  47. smtp.login(sender, password) # 登录的用户名和密码
  48. smtp.sendmail(sender, receiver, msg.as_string())
  49. smtp.quit()
  50. print('sendmail success')
  51.  
  52. #======================查找最新的测试报告==========================
  53.  
  54. def new_report(testreport):
  55. dirs = os.listdir(testreport)
  56. dirs.sort()
  57. newreportname = dirs[-1]
  58. print('The new report name: {0}'.format(newreportname))
  59. file_new = os.path.join(testreport, newreportname)
  60. return file_new
  61.  
  62. if __name__ == '__main__':
  63. test_report = "D:\\Python\\Demo\\report"
  64. new_report = new_report(test_report)
  65. send_mail(new_report)

  

python发送邮件(在邮件中显示HTMLTestRunner生成的报告)的更多相关文章

  1. 定时执行自动化脚本-(二)ant发送邮件及邮件中添加附件

    发送邮件及邮件添加附件均需要用java来实现 1.idea创建一个maven的java项目,目录结构如下 2.pom.xml文件添加依赖的javax.mail <dependencies> ...

  2. Python3.0 调用HTMLTestRunner生成的报告中不能显示用例中print函数的输出

    官方原生的HTMLTestRunner.py支持python2.0版本,python3.0版本的使用需要做一些修改: Python3调用HTMLTestRunner执行用例生成测试报告中,不能正常显示 ...

  3. 转-调用HTMLTestRunner生成的报告中不能显示用例中print函数的输出

    官方原生的HTMLTestRunner.py支持python2.0版本,python3.0版本的使用需要做一些修改: Python3调用HTMLTestRunner执行用例生成测试报告中,不能正常显示 ...

  4. Python 3.6版本中实现 HTMLTestRunner输出时”fp=file(filename,'wb')“报错

    原错误代码: if __name__=='__main__': suite=unittest.makeSuite(WidgetTestCase) filename='D:\\myreport.html ...

  5. 【转】【Python】Python发送邮件(常见四种邮件内容)

    在写脚本时,放到后台运行,想知道执行情况,会通过邮件.SMS(短信).飞信.微信等方式通知管理员,用的最多的是邮件.在linux下,Shell脚本发送邮件告警是件很简单的事,有现成的邮件服务软件或者调 ...

  6. python发送邮件

    python发送邮件(无附件) ======================================================= #!/usr/bin/env python#coding ...

  7. python发送各类邮件的主要方法

    更多详见: http://www.w3cschool.cc/python/python-email.html python中email模块使得处理邮件变得比较简单,今天着重学习了一下发送邮件的具体做法 ...

  8. Python发送邮件(最全)

    简单邮件传输协议(SMTP)是一种协议,用于在邮件服务器之间发送电子邮件和路由电子邮件. Python提供smtplib模块,该模块定义了一个SMTP客户端会话对象,可用于使用SMTP或ESMTP侦听 ...

  9. python发送邮件方法总结

    python中email模块使得处理邮件变得比较简单,今天着重学习了一下发送邮件的具体做法,这里写写自己的的心得,也请高手给些指点.     一.相关模块介绍 发送邮件主要用到了smtplib和ema ...

随机推荐

  1. tp5.0 结合 Redis Cache缓存风暴

    方法介绍 1.sadd() 描述:为一个Key添加一个值.如果这个值已经在这个Key中,则返回FALSE. 参数:key value 返回值:成功返回true,失败false   2.delete() ...

  2. 绕过PALOALTO TRAPS EDR解决方案

    0x1 技术点 PaloAlto Traps(EDR解决方案)基于行为封锁和标记许多黑客工具. 0x2 绕过方法 最简单的解决方案就是禁用内置实用程序,即; Cytool.Cytool是一个集成命令行 ...

  3. Node.js WEB服务器(1)——编写简单的HTTP服务器

    基于分而治之的思想,很多架构都会采用分层的模式来处理某类应用.Node.js在Web开发上也是采用这种模式,分别提供了如下的三个层: Node核心 社区模块 应用逻辑 下面是一个最简形式的web服务器 ...

  4. python3+selenium入门03-操作谷歌浏览器

    操作谷歌浏览器同样也需要下载相应的driver插件,官网下载.也可以从我的网盘下载,不过可能不是最新的,网盘地址.打开谷歌浏览器的操作和火狐的差不过. from selenium import web ...

  5. requests库入门13-会话对象

    会话对象可以在跨请求保持某些参数,会话对象有requests api的大部分方法,我理解会话对象就是一个资源共享池 使用requests.Session()可以创建会话对象的实例 还是以之前GitHu ...

  6. 关于flock

    昨天在研究dropbear实现时,看到初始化脚本/etc/init.d/dropbear中有关于文件锁lock的内容,如下: lock /tmp/.switch2jffs    mkdir -p /e ...

  7. OpenStack实践系列⑥构建虚拟机实例

    OpenStack实践系列⑥构建虚拟机实例 四.创建一台虚拟机图解网络,并创建一个真实的桥接网络 创建一个单一扁平网络(名字:flat),网络类型为flat,网络适共享的(share),网络提供者:p ...

  8. codis3.2安装报错dashboard.go:369: [PANIC] call rpc create-proxy to dashboard 127.0.0.1:18080 failed的处理

    codis3.2安装报错dashboard.go:369: [PANIC] call rpc create-proxy to dashboard 127.0.0.1:18080 failed的处理 执 ...

  9. 抢红包时用到的redis函数

    2018-2-8 10:25:11 星期四 抢红包时经常会用redis(等其他nosql)的原子性函数去限流, 防止抢超, 下边列出一些主要的原子性函数 限制每个人只能抢一次 getSet(): 设置 ...

  10. thymeleaf:访问list,map等

    1.map 在后端放入一个map Map<String, String> mapDict = serviceBaseDict.selectMap(ConstantDictType.SYSI ...