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

常用邮件协议
发送邮件:SMTP

收取邮件:POP3、IMAP

常用邮件配置项

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

默认端口号

163邮箱(非SSL)

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

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


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

4、最后调用发件服务

5、参考代码

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 = ‘

这个是发送的 163 邮件

’ # 定义邮件正文为 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、参考代码

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 = ‘

这个是发送的 QQ 邮件

’ # 定义邮件正文为 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、参考代码

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的发送邮件代码即可。其实也是很简单!!!

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

  1. python接口自动化(十一)--发送post【data】(详解)

    简介 前面登录博客园的是传 json 参数,由于其登录机制的改变没办法演示,然而在工作中有些登录不是传 json 的,如 jenkins 的登录,这里小编就以jenkins 登录为案例,传 data ...

  2. python接口自动化(二十四)--unittest断言——中(详解)

    简介 上一篇通过简单的案例给小伙伴们介绍了一下unittest断言,这篇我们将通过结合和围绕实际的工作来进行unittest的断言.这里以获取城市天气预报的接口为例,设计了 2 个用例,一个是查询北京 ...

  3. python接口自动化(十八)--重定向(Location)(详解)

    简介 在实际工作中,有些接口请求完以后会重定向到别的url,而你却需要重定向前的url.URL主要是针对虚拟空间而言,因为不是自己独立管理的服务器,所以无法正常进行常规的操作.但是自己又不希望通过主域 ...

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

    简介 上一篇,我们虽然已经将生成的最新的测试报告发出去了,但是MIMEText 只能发送正文,无法带附件,因此我还需要继续改造我们的代码,实现可以发送带有附件的邮件.发送带附件的需要导入另外一个模块 ...

  5. python接口自动化(二十九)--html测试报告通过邮件发出去——上(详解)

    简介 前边几篇,已经教小伙伴们掌握了如何生成HTML的测试报告,那么生成测试报告,我们也不能放在那里不管了,这样即使你报告在漂亮,领导也看不到.因此如果想向领导汇报工作,不仅需要提供更直观的测试报告. ...

  6. python接口自动化(二十八)--html测试 报告——下(详解)

    简介 五一小长假已经结束了,想必大家都吃饱喝足玩好了,那就继续学习吧.一天不学习,自己知道:两天不学习,对手知道:三天不学习,大家知道:一周不学习,智商输给猪.好了开个玩笑都逗大家一乐,但是想想还是有 ...

  7. python读取每一行文字二十四_python接口自动化(二十四)--unittest断言——中(详解)...

    简介 上一篇通过简单的案例给小伙伴们介绍了一下unittest断言,这篇我们将通过结合和围绕实际的工作来进行unittest的断言.这里以获取城市天气预报的接口为例,设计了 2 个用例,一个是查询北京 ...

  8. python unittest断言_python接口自动化(二十四)--unittest断言——中(详解)

    简介 上一篇通过简单的案例给小伙伴们介绍了一下unittest断言,这篇我们将通过结合和围绕实际的工作来进行unittest的断言.这里以获取城市天气预报的接口为例,设计了 2 个用例,一个是查询北京 ...

  9. Python接口自动化之logging封装及实战

    VOL 124 15 2020-05 今天距2021年230天 这是ITester软件测试小栈第124次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上  ...

最新文章

  1. Mysql 查看连接数,状态 最大并发数 怎么设置才合理
  2. 基于 HTML5 的 WebGL 技术构建 3D 场景(一)
  3. boost::json模块实现远程过程调用的测试程序
  4. Linux下多节点SSH无密码互联实现
  5. 利用html 5 websocket做个山寨版web聊天室(手写C#服务器)
  6. 一款零注解API接口文档生成工具
  7. oracle除了什么之外,Oracle翻译
  8. 华为发布政企战略及华为云Stack,瞄准新基建下政企的数字化转型
  9. juniper防火墙策略元素
  10. presto Slice入门
  11. CDOJ 1157 数列(seq) 分块+线段树
  12. ICCV 2015 揭开152层神经网络的面纱
  13. 凯恩帝绝对坐标清零_KND凯恩帝数系统说明书.doc
  14. Spring 拾遗补阙
  15. 碎片化知识管理工具Memos
  16. IDEA设置默认浏览器为chrome
  17. 人脸对齐:Wing Loss人脸关键点检测算法2018
  18. MTK Android Led框架分析
  19. C语言实现cuckoo hash
  20. 安卓 build.prop 进行修改提高性能

热门文章

  1. 题目47:最大公约数
  2. ASP.NET笔记(二)
  3. Form组件之详解字段
  4. 【Java并发.2】线程安全性
  5. PyQT5 helloworld教程(转载)
  6. ADO+MFC数据库编程常用语句
  7. 设计模式 笔记 解释器模式 Interpreter
  8. 从电视机的角度来看设计模式之命令模式
  9. 【Q】【POJ 2560】【POJ 2031】
  10. ASP .NET基本概念