由于在开发自动化测试平台的过程中生成完成测试报告后需要发送邮件,故便写了这么一个方法作为记录,以下内容以腾讯企业邮箱为例

一、准备工作

1、准备一个可登陆的腾讯企业邮箱

首先,先登录至腾讯企业邮箱中,然后找到设置,找到客户端设置,看到以下页面
打开设置

2、记录发送服务器名称端口

然后在此页面中找到“发送服务器:”,在这一栏中我们可以获取到发送服务器和端口号,并将这两个值记录下
发送服务器相关信息

3、开启服务

在开启服务中将开启IMAP/SMTP服务、开启POP/SMTP服务都勾选上,然后根据提示去生成一个授权码并记录下来
开启服务

二、开始开发

1、定义一个类,并定义刚刚准备好的几个变量值

class Send_Email:
    def __init__(self):
        """
        :param mail_host: 设置服务器
        :param mail_user: 企业邮箱
        :param mail_post: 端口号
        :param mail_pass: 口令,QQ邮箱是输入授权码,在qq邮箱设置 里用验证过的手机发送短信获得,不含空格
        """
        self.mail_user = "XXXX@XXXX.cn"
        self.mail_host = "smtp.exmail.qq.com"
        self.mail_pass = "XXXXXXXXXXX"
        self.mail_post = 465

2、编写发送脚本

需要传入参数发送人、标题、内容(html)、接收邮件的邮箱(可为str或list)四个参数

import smtplib
from email.mime.text import MIMEText
from email.header import Header


def sendEmail(self, **params):
        """
        :param sender: 发送人
        :param subject: 标题
        :param content: 内容
        :param receivers: 接收邮件的邮箱(可为str或list)
        :return:
        """
        message = MIMEText(params['content'], 'html', 'utf-8')
        message['From'] = Header(params['sender'], 'utf-8')
        message['To'] = Header("所有人", 'utf-8')

        message['Subject'] = Header(params['subject'], 'utf-8')

        try:
            smtpObj = smtplib.SMTP_SSL(self.mail_host, self.mail_post)
            smtpObj.login(self.mail_user, self.mail_pass)
            smtpObj.sendmail(params['sender'], params['receivers'], message.as_string())
            smtpObj.quit()
        except smtplib.SMTPException as e:
            print(e)

最后运行即可进行发送

if __name__ == '__main__':
    html = """
                <!DOCTYPE html><html lang = "en"><head><meta charset = "UTF-8"><title>测试报告邮件</title></head><body>
                <div>测试发送</div>
                </body></html>
            """
    send = Send_Email()
    send.sendEmail(sender='XXXXX@XXXXX.cn', content=html,
                   subject='上线报告', receivers=['XXXXXXX@XXX.cn'])

三、运行结果

打开接收邮箱,我们可以看到已经接收到了该邮件

发送成功

添加微信