首页
学习
活动
专区
圈层
工具
发布
42 篇文章
1
python接口自动化(一)--什么是接口、接口优势、类型(详解)
2
python接口自动化(二)--什么是接口测试、为什么要做接口测试(详解)
3
python接口自动化(三)--如何设计接口测试用例(详解)
4
python接口自动化(四)--接口测试工具介绍(详解)
5
python接口自动化(五)--接口测试用例和接口测试报告模板(详解)
6
python接口自动化(六)--发送get请求接口(详解)
7
python接口自动化(七)--状态码详解对照表(详解)
8
python接口自动化(八)--发送post请求的接口(详解)
9
python接口自动化(九)--python中字典和json的区别(详解)
10
python接口自动化(十)--post请求四种传送正文方式(详解)
11
python接口自动化(十一)--发送post【data】(详解)
12
python接口自动化(十二)--https请求(SSL)(详解)
13
python接口自动化(十三)--cookie绕过验证码登录(详解)
14
python接口自动化(十四)--session关联接口(详解)
15
python接口自动化(十五)--参数关联接口(详解)
16
python接口自动化(十六)--参数关联接口后传(详解)
17
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
18
python接口自动化(十八)--重定向(Location)(详解)
19
python接口自动化(十九)--Json 数据处理---实战(详解)
20
python接口自动化(二十)--token登录(详解)
21
python接口自动化(二十一)--unittest简介(详解)
22
python接口自动化(二十二)--unittest执行顺序隐藏的坑(详解)
23
python接口自动化(二十三)--unittest断言——上(详解)
24
python接口自动化(二十四)--unittest断言——中(详解)
25
python接口自动化(二十五)--unittest断言——下(详解)
26
python接口自动化(二十六)--批量执行用例 discover(详解)
27
python接口自动化(二十七)--html 测试报告——上(详解)
28
python接口自动化(二十八)--html测试 报告——下(详解)
29
python接口自动化(二十九)--html测试报告通过邮件发出去——上(详解)
30
python接口自动化(三十)--html测试报告通过邮件发出去——中(详解)
31
python接口自动化(三十一)--html测试报告通过邮件发出去——下(详解)
32
python接口自动化(三十二)--Python发送邮件(常见四种邮件内容)番外篇——上(详解)
33
python接口自动化(三十三)-python自动发邮件总结及实例说明番外篇——下(详解)
34
python接口自动化(三十四)-封装与调用--函数和参数化(详解)
35
python接口自动化(三十五)-封装与调用--流程类接口关联(详解)
36
python接口自动化(三十六)-封装与调用--流程类接口关联续集(详解)
37
python接口自动化(三十七)-封装与调用--读取excel 数据(详解)
38
python接口自动化(三十八)-python操作mysql数据库(详解)
39
python接口自动化(三十九)- logger 日志 - 上(超详解)
40
python接口自动化(四十)- logger 日志 - 下(超详解)
41
python接口自动化(四十一)- 发xml格式参数的post请求(超详解)
42
python接口自动化(四十二)- 项目结构设计之大结局(超详解)

python接口自动化(三十一)--html测试报告通过邮件发出去——下(详解)

简介 

  本篇总结了 QQ (SSL)邮箱和 163(非SSL) 邮箱发送邮件,专治各种不行,总之看完这篇以后麻麻再也不用担心我的邮件收不到了。以下代码兼容 python2 和 python3,运行无异常,放心大胆使用。

常用邮件协议

发送邮件:SMTP

收取邮件:POP3、IMAP

常用邮件配置项

配置项

说明

mail.xxx.ssl.enable

是否支持 SSL 连接

mail.xxx.host

邮件服务器主机名

mail.xxx.port

邮件服务器端口号

mail.xxx.auth

是否进行身份认证

说明:xxx 表示协议名称,例如:smtp、pop3 等。

默认端口号

SMTP

POP3

IMAP

普通方式(非SSL)

25

110

143

SSL 方式

465

995

993

163邮箱(非SSL)

1、先导入 smtplib 库用来发送邮件,导入 MIMEText 库用来做纯文本的邮件模板

2、先准备几个跟发邮件相关的参数,每个邮箱的发件服务器都不一样,以 163为例,百度搜到发件服务器为:smtp.163.com

3、接下来就是写邮件的主题和正文内容,正文这里用 html 格式的

4、最后调用发件服务

5、参考代码

代码语言:javascript
复制
 1 # coding=utf-8
 2 #1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
 3 
 4 #2.注释:包括记录创建时间,创建人,项目名称。
 5 '''
 6 Created on 2019-5-8
 7 @author: 北京-宏哥
 8 Project:学习和使用163邮箱发邮件
 9 '''
10 #3.导入模块
11 import smtplib
12 from email.mime.text import MIMEText
13 # ----------1.跟发件相关的参数------
14 smtpserver = "smtp.163.com" # 发件服务器
15 port = 0 # 端口
16 sender = "hongge@163.com" # 账号
17 psw = "**************" # 密码
18 receiver = "1918991791@qq.com" # 接收人
19 # ----------2.编辑邮件的内容------
20 subject = "这个是主题 163"
21 body = '<p>这个是发送的 163 邮件</p>' # 定义邮件正文为 html 格式
22 msg = MIMEText(body, "html", "utf-8")
23 msg['from'] = sender
24 msg['to'] = "19198991791@qq.com"
25 msg['subject'] = subject
26 # ----------3.发送邮件------
27 smtp = smtplib.SMTP()
28 smtp.connect(smtpserver) # 连服务器
29 smtp.login(sender, psw) # 登录
30 smtp.sendmail(sender, receiver, msg.as_string()) # 发送
31 smtp.quit() # 关闭

QQ邮箱(SSL)

1、QQ 邮箱是需要 SSL 认证的,这种邮箱跟上面的就有点不一样了(如果已经开启了,不知道授权码,就点温馨提示里面的‘生成授权码’)

2、找到 QQ 邮箱授权码,打开 QQ 邮箱-设置-账号-POP3 开启服务-开启

3、根据相对应的验证方式,就会收到授权码了

4、收到授权码后复制,保存下来,这个就可以当 QQ 邮箱的密码了

5、QQ 邮箱发送邮件代码,跟 163 有点不一样,如下图红色框框:

6、参考代码

代码语言:javascript
复制
 1 # coding=utf-8
 2 #1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
 3 
 4 #2.注释:包括记录创建时间,创建人,项目名称。
 5 '''
 6 Created on 2019-5-8
 7 @author: 北京-宏哥
 8 Project:学习和使用QQ邮箱发邮件
 9 '''
10 #3.导入模块
11 import smtplib
12 from email.mime.text import MIMEText
13 # ----------1.跟发件相关的参数------
14 # smtpserver = "smtp.163.com" # 发件服务器
15 smtpserver = "smtp.qq.com"
16 port = 465 # 端口
17 sender = "1918991791@qq.com" # 账号
18 psw = "**************" # 密码
19 receiver = "1918991791@qq.com" # 接收人
20 # ----------2.编辑邮件的内容------
21 subject = "这个是主题 QQ"
22 body = '<p>这个是发送的 QQ 邮件</p>' # 定义邮件正文为 html 格式
23 msg = MIMEText(body, "html", "utf-8")
24 msg['from'] = sender
25 msg['to'] = "1918991791@qq.com"
26 msg['subject'] = subject
27 # ----------3.发送邮件------
28 # smtp = smtplib.SMTP()
29 # smtp.connect(smtpserver) # 连服务器
30 smtp = smtplib.SMTP_SSL(smtpserver, port)
31 smtp.login(sender, psw) # 登录
32 smtp.sendmail(sender, receiver, msg.as_string()) # 发送
33 smtp.quit() # 关闭

兼容 163(非SSL) 和 QQ 邮箱(SSL)

1、Python中检测处理异常是非常重要的,这可以增加代码的健壮性,我们在写python程序的时候,会可能会遇到一些不可预料的情况,一旦遇到这些情况,运行时程序便可能会崩溃。异常可以通过 try 语句来检测. 任何在 try 语句块里的代码都

会被监测, 检查有无异常发生。

  try 语句有两种主要形式: try-except 和 try-finally . 这两个语句是互斥的, 也就是说你只能使用其中的一种 . 一个 try 语句可以对应一个或多个 except 子句 , 但只能对应一个finally 子句, 或是一个 try-except-finally 复合语句.

try-except 语句(以及其更复杂的形式)定义了进行异常监控的一段代码, 并且提供了处理异常的机制.

最常见的 try-except 语句语法如下所示,它由try块和except块 (try_suite 和 except_suite )组成, 也可以有一个可选的错误原因。首先尝试执行 try 子句, 如果没有错误, 忽略所有的 except 从句继续执行,如果发生异常, 解释器将在这一串处理器

(except 子句)中查找匹配的异常。

简单用法(except后面不跟特定异常,这会捕获所有异常)这种好处就是你不知道会发生什么异常,尽管用;坏处就是当异常发生时候,不能清楚了解到底发生哪种异常。

我们可以发现,连接没有成功,但程序是正常运行的,会继续往下运行如果没有try,程序则会中断报错。我们发现第一个print并没有运行,这是因为try 语句块中异常发生点后的剩余语句永远不会到达(所以也永远不会执行)。

2、好了关于try的讲解就到这里,回归正题:如果想兼容上面两种方式发送邮件,只需把第三块内容稍微改下,如下所示

3、参考代码

代码语言:javascript
复制
 1 # ----------3.发送邮件------
 2 try:
 3     #非SSL
 4     smtp = smtplib.SMTP()
 5     smtp.connect(smtpserver) # 连服务器
 6 except:
 7     #SSL
 8     smtp = smtplib.SMTP_SSL(smtpserver, port)
 9     smtp.login(sender, psw) # 登录
10 smtp.sendmail(sender, receiver, msg.as_string()) # 发送
11 smtp.quit() # 关闭

小结

1、小伙伴们下次遇到这样的直接就用兼容SSL和非SSL的发送邮件代码即可。其实也是很简单!!!

下一篇
举报
领券