发送报告作为自动化部署来讲是一个重要的环节,废话不多说直接上代码吧,如果想更细致的了解内容查阅本博主上篇基本发送文章

特别叮嘱一下:SMTP协议默认端口25,qq邮箱SMTP服务器端口是465 别出丑了噢

  1. import smtplib
    import os
    from smtplib import SMTP_SSL
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart
    from 000.11111.22222 import 33333 #为了规范代码特将自己需要的方法进行封装成了类,从而直接引用
    from time import strftime

    class Email:
    def __init__(self):
    self.cu = 33333()
    self.host = self.cu.get_email("host")
    self.port = int(self.cu.get_email("port"))
    self.user = self.cu.get_email("user")
    self.password = self.cu.get_email("password")
    self.to_addrs_default = self.cu.get_email("to_addrs").split(",")
    # 初始化email服务器
    self.smtp = SMTP_SSL(self.host, self.port)
    # 登录
    self.smtp.login(self.user, self.password)
    def send_text(self,title,body=None,to_addrs=None,unipath=None,batch=True):
    if to_addrs is None:
    to_addrs = self.to_addrs_default
    if batch:
    #编辑添加邮件内容
    mail = str(body)
    msg = MIMEMultipart()
    text_plain = MIMEText('附件为接口自动化测试报告,请查收!', 'plain', 'utf-8')#邮件内容
    msg['From'] = self.user
    msg['Subject'] = title
    for i in to_addrs:
    msg["to"] = i
    msg.attach(text_plain)

    #当前文件夹下最新文件作为附件进行发送
    test_report = r'D:\Basic framework\ZUCC\report' # 存放文件的目录
    lists = os.listdir(r'D:\Basic framework\ZUCC\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'] = f"attachment; filename ='{strftime('%Y%m%d%H%M')}.xls'" # 重新命名附件,后缀格式可以自己定
    msg.attach(text_att)
    #发送信息
    try:
    self.smtp.sendmail(self.user,[i], msg.as_string())
    self.smtp.close()
    print('邮件发送成功')
    except Exception as e:
    print('邮件发送失败: ', str(e))
    if __name__ == '__main__':
    Emailutil().send_text('测试标题')

    到此结束,希望各位给博主来个关注或点个大大的赞噢

python自动将新生成的报告作为附件发送并进行封装的更多相关文章

  1. jenkins运行脚本生成HTML报告时遇到的问题

    1.jenkins生成HTML报告 1)安装插件:HTML Publisher plugin 2)系统管理->插件管理->安装HTMLHTML Publisher plugin 2.job ...

  2. python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告

    1.环境准备: python3.6 requests xlrd openpyxl HTMLTestRunner_api 2.目前实现的功能: 封装requests请求方法 在excel填写接口请求参数 ...

  3. python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(二)

    可以参考 python+requests接口自动化完整项目设计源码(一)https://www.cnblogs.com/111testing/p/9612671.html 原文地址https://ww ...

  4. python笔记32-ddt框架优化(生成html报告注释内容传变量)

    前言 至于什么是ddt这个可以参考我之前写的博客内容,使用ddt框架的时候,有个问题困扰我很久了,一直没得到解决(也有很大小伙伴问过我,没解决抱歉了!) 这个问题就是:如何使用ddt框架时,生成的ht ...

  5. 利用python自动生成verilog模块例化模板

    一.前言 初入职场,一直忙着熟悉工作,就没什么时间更新博客.今天受“利奇马”的影响,只好宅在家中,写写技术文章.芯片设计规模日益庞大,编写脚本成了芯片开发人员必要的软技能.模块端口动不动就几十上百个, ...

  6. python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(已弃用)

    前言 1.环境准备: python3.6 requests xlrd openpyxl HTMLTestRunner_api 2.目前实现的功能: 封装requests请求方法 在excel填写接口请 ...

  7. Python自动生成代码工具

    项目中有一个需求,对一个基类而言,拥有一个比较方法和拷贝方法,某些地方需要频繁地对这两个方法进行调用.对于所有子类而言,需要重写这两个方法,并在其中维护类内一些成员变量.例如有一个变量m_iMyVal ...

  8. 从用python自动生成.h的头文件集合和类声明集合到用python读写文件

    最近在用python自动生成c++的类.因为这些类会根据需求不同产生不同的类,所以需要用python自动生成.由于会产生大量的类,而且这些类是变化的.所以如果是在某个.h中要用include来加载这些 ...

  9. 自动生成AWR报告

    --自动生成AWR报告 -------------------2013/09/23   脚本代码:   #!/bin/bash   AWR_FORMAT=html NUM_DAYS=1   MAX_S ...

随机推荐

  1. JavaScript 中 empty、remove 和 detach的区别

    内容 empty.remove 和 detach的区别 jQuery 操作 DOM 之删除节点 方法名 元素所绑定的事件及数据是否也被移除 作用 $(selector).empty() 是 从被选元素 ...

  2. 浅谈js本地图片预览

    最近在工作中遇到一个问题,就是实现一个反馈页面,这个反馈页面的元素有反馈主题.反馈类型.反馈内容.反馈人联系电话以及反馈图片.前端将这些反馈的元素POST给后台提供的接口:实现这个工作的步骤就是:页面 ...

  3. HTTP长连接和短连接及应用情景

    HTTP短连接 HTTP/1.0中默认使用短连接, 客户端和服务器进行一次HTTP操作, 就需要建立一次连接, 任务结束连接也关闭. 当客户端浏览器访问的web网页中包含其他的web资源时, 每遇到一 ...

  4. allure用法(一)-配置信息及基本用法

    allure是一个轻量级的,灵活的,支持多语言的测试报告工具 优点: 可以为dev/qa 提供 详尽的测试报告.测试步骤.日志 可以为管理层提供更好的统计报告 Java语言开发的 可以集成到jenki ...

  5. css 实现输入效果

    <template>   <h1>Pure CSS Typing animation.</h1> </template> <script> ...

  6. 微信小程序--设置和获取剪切板内容

    设置 wx.setClipboardData  // 复制功能 获取 wx.getClipboardData // 粘贴功能     let _this = this     wx.setClipbo ...

  7. Sql语言-操作表

    2. 操作表 1. C(Create):创建 1. 语法: create table 表名( 列名1 数据类型1, 列名2 数据类型2, .... 列名n 数据类型n ); * 注意:最后一列,不需要 ...

  8. SQL Server 2019 异常服务没有及时响应启动或控制请求

    安装到最后一步时发生了如下错误 解决办法: 1.使用管理员打开cmd窗口,输入以下命令 net localgroup administrators "NETWORK SERVICE" ...

  9. 【安全建设】日志监控的极品工具sysmon

    转载请注明出处:https://www.cnblogs.com/vitalemontea/p/16178048.html 1.前言 最近态势感知爆了某个同事有挖矿事件的告警,打开一看,就是会通过dns ...

  10. 【HCIE】ipv6之6to4隧道如何计算48位前缀地址

    6to4隧道支持router-router,host-router,router-host,host-host 采用专用6to4地址,前缀为2002::/16 其中如何结合ipv4地址? 2002:i ...