自动化测试执行完成后,需要自动发送测试报告。Python发送邮件可以使用smtplib标准模块,但该模块比较繁琐,推荐使用yagmail这个第三方模块,用法比较简单。

一、邮箱设置

1、在邮箱设置里打开smtp服务

2、开启邮箱授权码

   并不是所有邮箱都有邮箱授权码。163邮箱授权码可以自己输入,qq邮箱授权码是随机码,新浪邮箱则没有邮箱授权码,直接通过登录密码发送邮件。

二、利用yagmail实现邮件发送

需要注意的是:

  1、yagmail实际是封装了smtplib模块,来实现的邮件发送功能

  2、直接下载的yagmail模块,发送中文附件时标题乱码(解决这个问题,需要修改模块源码)

实际用法如下:

 import yagmail
username = '123456@qq.com' # 邮箱账号
passwd = 'abcdefghijklmnopq' # 授权码,有时效(一般是一年)
mail = yagmail.SMTP(user=username,
password=passwd,
host='smtp.qq.com',
smtp_ssl=True
) # 果用的是QQ邮箱或者是使用安全协议的邮箱需要加上smtp_ssl=True
mail.send(
to=['123@163.com','456@163.com'], # 收件人,多个收件人,写成list
cc=['789@qq.com','999@qq.com'], # 抄送人,多个收件人,写成list
subject='发送邮件测试', # 邮件标题
contents='正常上课', # 邮件正文
attachments=[r'C:\Users\Desktop\test.txt',
r'C:\Users\Desktop\test.docx']# 发多个附件,放到一个list里面
)
print('发送成功')

Python学习之==>发送邮件的更多相关文章

  1. python学习笔记(十九)发送邮件

    在python开发项目或者做自动化测试时候,在测试完成后需要将测试结果总结后进行上报,那么我们就可以通过发送邮件来完成这项工作. 下面我们来看看python中怎么发送邮件的,python中发送邮件可以 ...

  2. Python学习笔记(四十七)SMTP发送邮件

    摘抄自:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432005226 ...

  3. python学习: 如何循序渐进学习Python语言

    大家都知道Python语言是一种新兴的编程语言.1989年,Python就由Guido van Rossum发明.Python一直发展态势很好. 原因有几点:1.跨平台性好.Linux.Windows ...

  4. python使用smtplib发送邮件

    python要实现发送邮件的功能,需要使用smtplib库. 1. 过程大致如下: 1. 建立和SMTP邮件服务器的连接 # 默认端口25 smtp = smtplib.SMTP(host, port ...

  5. python学习笔记(SMTP邮件发送)

    想着给框架添加邮件发送功能.所以整理下python下邮件发送功能 首先python是支持邮件的发送.内置smtp库.支持发送纯文本.HTML及添加附件的邮件 之后是邮箱.像163.qq.新浪等邮箱默认 ...

  6. Python学习的十个阶段,学完神功大成,对应一下看看你自己在哪个阶段

    大家好,我是白云. 今天给大家整理了Python学习的十个阶段内容,看看你现在正处于哪个阶段,想学习的朋友也可以根据这个阶段规划学习. 阶段一:Python基础[ 初入江湖] Linux基础 目标: ...

  7. Python学习--04条件控制与循环结构

    Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...

  8. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

  9. Python 学习小结

    python 学习小结 python 简明教程 1.python 文件 #!/etc/bin/python #coding=utf-8 2.main()函数 if __name__ == '__mai ...

随机推荐

  1. inetd - 因特网“超级服务”

    总览 inetd - [ -d ] [ -q 队列长度 ] [ 配置文件名 ] 描述 inetd通常在系统启动时由/etc/rc.local引导.inetd会监听指定internet端口是否有连接要求 ...

  2. 配置MySQL服务器使得外网可以连接

    https://blog.csdn.net/bird3014/article/details/78481104

  3. MATLAB仿真 让波形动起来

    dt=1e-6;T=2*1e-3;for N=0:500; t=N*T+(0:dt:T); input=2*cos(2*pi*1005*t); carrier=5*cos(2*pi*(1e4)*t+0 ...

  4. VMware 问题

    桥接模式下,小鸡上不了网问题 多网卡导致的问题 解决:编辑-虚拟网络编辑器 选择vmnet0,然后点击右下角更改设置 把自动改为指定要桥接的网卡,然后点击确定,测试看看.

  5. 循环 for 读取文件

    cat filename(待读取的文件) | while read line do echo $line done

  6. web框架-(六)Django补充---form表单验证

    一.form表单验证 1. 常规html页面的form表单验证 常规页面中,如果想实现对表单中用户输入信息的数据验证,需要配合Ajax来实现. 使用前我们先来熟悉下函数参数:request,其中包含的 ...

  7. Mvc Excel导入加事务加导出

    导出 public FileResult Input() { DataTable dt = new DataTable("dd"); using (SqlConnection co ...

  8. Java 接口和内部类

    接口的方法默认死public,接口的属性默认为public static final. 为什么要接口,而不是使用抽象类.一个对象只能继承一个类,却可以实现多个接口. clone: Object的浅拷贝 ...

  9. Spring mvc项目的web.xml以及注释

    web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp ...

  10. Python面向对象的三大特性之继承和组合

    继承和组合 一.组合 组合:组合指的是,在一个类中以另外一个类的对象(也就是实例)作为数据属性,称为类的组合 也就是说:一个类的属性是另一个类的对象,就是组合 例子: 圆环是由两个圆组成的,圆环的面积 ...