Python+selenium 自动化测试之SMTP 邮件发送

SMTP简介

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

邮件发送前的准备工作

1.开启SMTP服务配置,由于之前QQ邮箱设置了很多次,也没成功,所以这里我用的是网易163邮箱。

登录网易——设置——勾选POP3.SMTP服务协议。(勾选时会设置一个授权密码,下面代码中的密码,是邮箱登录时的密码。昵称可以随便填)

Python+selenium 自动化测试之SMTP 邮件发送

 

以下就是 我的代码

#coding:utf-8   #强制使用utf-8编码格式
import smtplib  #加载smtplib模块
from email.mime.text import MIMEText
from email.utils import formataddr
my_sender='*********@163.com' #发件人邮箱账号,为了后面易于维护,所以写成了变量
my_user='****@qq.com' #收件人邮箱账号,也可以写自己的QQ邮箱,为了后面易于维护,所以写成了变量
def mail():
    ret=True
    try:
        msg=MIMEText('你个憨逼','plain','utf-8')
        msg['From']=formataddr(['111',my_sender])   #括号里的对应发件人邮箱昵称、发件人邮箱账号(昵称我是随便写的)
        msg['To']=formataddr(['1111',my_user])   #括号里的对应收件人邮箱昵称、收件人邮箱账号
        msg['Subject']="主题" #邮件的主题,也可以说是标题

        server=smtplib.SMTP("smtp.163.com",25)  #发件人邮箱中的SMTP服务器,端口是25
        server.login(my_sender,"*********")    #括号中对应的是发件人邮箱账号、邮箱密码(是登录邮箱的密码不是授权密码,不然后面可能发送不成功)
        server.sendmail(my_sender,[my_user,],msg.as_string())   #括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
        server.quit()   #这句是关闭连接的意思
    except Exception:   #如果try中的语句没有执行,则会执行下面的ret=False
        ret=False
    return ret

ret=mail()
if ret:
    print("邮件发送成功") #如果发送成功则会返回ok,稍等20秒左右就可以收到邮件
else:
    print("邮件发送失败")  #如果发送失败则会返回filed

1.如果发送成功则会返回ok,否则为执行不成功,如下图:

Python+selenium 自动化测试之SMTP 邮件发送

2.如果出现下图,可能就是邮箱地址,SMTP服务器配置,或者是密码不正确:

Python+selenium 自动化测试之SMTP 邮件发送

3.还有一种情况是-ERR Please using authorized code to login. More information at -ERR Please using authorized code to login. More information at http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256

是由于使用QQ邮箱作为发送时,sender_pass的密码是授权码的密码,或者是邮件SMTP服务没有开启配置