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

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

简介



本篇总结了 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


1232840-20190507140739294-1754057195.png


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

4、最后调用发件服务


1232840-20190507140815957-515961600.png


5、参考代码

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


QQ邮箱(SSL)



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

1232840-20190507145139543-134313177.png


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


1232840-20190507145336602-530953428.png


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


1232840-20190507145528270-2138859758.png


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

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


1232840-20190507153113523-1794063469.png


6、参考代码

 # coding=utf-8
  #1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
  #2.注释:包括记录创建时间,创建人,项目名称。
  '''
  Created on 2019-5-8
  @author: 北京-宏哥
  Project:学习和使用QQ邮箱发邮件
  '''
 #3.导入模块
 import smtplib
 from email.mime.text import MIMEText
 # ----------1.跟发件相关的参数------
 # smtpserver = "smtp.163.com" # 发件服务器
 smtpserver = "smtp.qq.com"
 port = 465 # 端口
 sender = "1918991791@qq.com" # 账号
 psw = "**************" # 密码
 receiver = "1918991791@qq.com" # 接收人
 # ----------2.编辑邮件的内容------
 subject = "这个是主题 QQ"
 body = '<p>这个是发送的 QQ 邮件</p>' # 定义邮件正文为 html 格式
 msg = MIMEText(body, "html", "utf-8")
 msg['from'] = sender
 msg['to'] = "1918991791@qq.com"
 msg['subject'] = subject
 # ----------3.发送邮件------
 # smtp = smtplib.SMTP()
 # smtp.connect(smtpserver) # 连服务器
 smtp = smtplib.SMTP_SSL(smtpserver, port)
 smtp.login(sender, psw) # 登录
 smtp.sendmail(sender, receiver, msg.as_string()) # 发送
 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 子句)中查找匹配的异常。


u=3551840761,1138950460&fm=173&app=25&f=JPEG.jpg


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


u=3440588802,3676325594&fm=173&app=25&f=JPEG.jpg


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


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


1232840-20190508090351471-1815021821.png


3、参考代码

 # ----------3.发送邮件------
 try:
      #非SSL
      smtp = smtplib.SMTP()
      smtp.connect(smtpserver) # 连服务器
 except:
     #SSL
      smtp = smtplib.SMTP_SSL(smtpserver, port)
      smtp.login(sender, psw) # 登录
 smtp.sendmail(sender, receiver, msg.as_string()) # 发送
11 smtp.quit() # 关闭


小结



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

相关文章
|
3月前
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
180 11
|
3月前
|
数据采集 人工智能 自然语言处理
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
926 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
|
2月前
|
存储 测试技术 API
pytest接口自动化测试框架搭建
通过上述步骤,我们成功搭建了一个基于 `pytest`的接口自动化测试框架。这个框架具备良好的扩展性和可维护性,能够高效地管理和执行API测试。通过封装HTTP请求逻辑、使用 `conftest.py`定义共享资源和前置条件,并利用 `pytest.ini`进行配置管理,可以大幅提高测试的自动化程度和执行效率。希望本文能为您的测试工作提供实用的指导和帮助。
140 15
|
3月前
|
机器学习/深度学习 人工智能 jenkins
探索软件测试中的自动化与持续集成
【10月更文挑战第21天】 在软件开发的生命周期中,软件测试扮演着至关重要的角色。随着技术的进步和开发模式的转变,自动化测试和持续集成已经成为提高软件质量和效率的关键手段。本文将深入探讨自动化测试和持续集成的概念、实施策略以及它们如何相互配合以优化软件开发流程。我们将通过分析实际案例,展示这些技术如何在实际项目中发挥作用,以及面临的挑战和解决方案。此外,文章还将讨论未来趋势,包括人工智能在测试领域的应用前景。
119 17
|
3月前
|
Java 测试技术 API
探索软件测试中的自动化测试框架
本文深入探讨了自动化测试在软件开发中的重要性,并详细介绍了几种流行的自动化测试框架。通过比较它们的优缺点和适用场景,旨在为读者提供选择合适自动化测试工具的参考依据。
|
3月前
|
数据管理 测试技术 持续交付
软件测试中的自动化测试策略与最佳实践
在当今快速迭代的软件开发环境中,自动化测试已成为确保软件质量和加速产品上市的关键手段。本文旨在探讨软件测试中的自动化测试策略,包括选择合适的自动化测试工具、构建有效的自动化测试框架以及实施持续集成和持续部署(CI/CD)。通过分析自动化测试的最佳实践,本文为软件开发团队提供了一系列实用的指南,以优化测试流程、提高测试效率并减少人为错误。
105 4
|
3月前
|
监控 测试技术 定位技术
探索软件测试中的自动化测试框架选择与实施###
本文不概述传统意义上的摘要内容,而是直接以一段对话形式引入,旨在激发读者兴趣。想象一下,你是一名勇敢的探险家,面前摆满了各式各样的自动化测试工具地图,每张地图都指向未知的宝藏——高效、精准的软件测试领域。我们将一起踏上这段旅程,探讨如何根据项目特性选择合适的自动化测试框架,并分享实施过程中的关键步骤与避坑指南。 ###
75 4
|
3月前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!
|
3月前
|
jenkins 测试技术 持续交付
软件测试中的自动化与持续集成
在现代软件开发过程中,自动化测试和持续集成已成为不可或缺的组成部分。本文将深入探讨自动化测试和持续集成的重要性、优势以及如何有效实施它们以提升软件质量和开发效率。通过具体案例分析,我们将展示这些技术如何在实际项目中发挥作用,并讨论其面临的挑战及应对策略。
92 3
|
3月前
|
机器学习/深度学习 前端开发 数据处理
利用Python将Excel快速转换成HTML
本文介绍如何使用Python将Excel文件快速转换成HTML格式,以便在网页上展示或进行进一步的数据处理。通过pandas库,你可以轻松读取Excel文件并将其转换为HTML表格,最后保存为HTML文件。文中提供了详细的代码示例和注意事项,帮助你顺利完成这一任务。
144 0