zoukankan      html  css  js  c++  java
  • 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、参考代码

     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、参考代码

     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、参考代码

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

  • 相关阅读:
    事务传播机制,搞懂。
    洛谷 P1553 数字反转(升级版) 题解
    洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is Here 题解
    洛谷 P1055 ISBN号码 题解
    洛谷 P2141 珠心算测验 题解
    洛谷 P1047 校门外的树 题解
    洛谷 P1980 计数问题 题解
    洛谷 P1008 三连击 题解
    HDU 1013 题解
    HDU 1012 题解
  • 原文地址:https://www.cnblogs.com/du-hong/p/10819319.html
Copyright © 2011-2022 走看看