前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python接口自动化测试(四)Email发送方法

python接口自动化测试(四)Email发送方法

原创
作者头像
FutureTester
发布2021-12-30 22:04:41
3740
发布2021-12-30 22:04:41
举报
文章被收录于专栏:FutureTesterFutureTester

自动化框架中会用到通过邮件发送测试报告的功能,需要用到python的email库和smtplib

下面以具体代码来说明:

这里首先用到一个类型MIMEMultipart(),用来处理正文及附件。

添加一个MIMEmultipart类,处理正文及附件

代码语言:python
复制
    message = MIMEMultipart()
    message['From'] = EmailSetting['这里填写发送邮箱']
    message['Subject'] = 'xxxxx接口测试报告'

打开文件,并且读取文件内容,设置html格式

代码语言:python
复制
    with open(EmailSetting['filename'], 'rb') as f:
        content = f.read()
        f.close()

设置html格式参数

代码语言:python
复制
    part1 = MIMEText(content, 'html', 'utf-8')
    message.attach(part1)

插入附件

代码语言:python
复制
att1 = MIMEText(open(EmailSetting['filename'], 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
att1["Content-Disposition"] = 'attachment; filename="test_result.html"'
message.attach(att1)

发送邮件,smtp_server:邮箱服务器 smtp_port:端口

代码语言:python
复制
server = smtplib.SMTP(EmailSetting['smtp_server'], EmailSetting['smtp_port'])
server.set_debuglevel(1)
server.starttls()
server.login(EmailSetting['这里填写发送邮箱'], EmailSetting['这里填写密码'])
server.sendmail(EmailSetting['这里填写发送邮箱'], EmailSetting['这里填写接收邮箱'], message.as_string())
server.quit()

完整代码:

代码语言:python
复制
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
from email.mime.multipart import MIMEMultipart
import smtplib
from config.Global import EmailSetting
def SendEmail():
    def _format_addr(s):
        name, addr = parseaddr(s)
        return formataddr((Header(name, 'utf-8').encode(), addr))
    # 设置eamil信息
    # 添加一个MIMEmultipart类,处理正文及附件
    message = MIMEMultipart()
    message['From'] = EmailSetting['from_addr']
    message['Subject'] = 'xxxxx接口测试报告'
    with open(EmailSetting['filename'], 'rb') as f:
        content = f.read()
        f.close()
    # 设置html格式参数
    part1 = MIMEText(content, 'html', 'utf-8')
    message.attach(part1)
    # 插入附件
    att1 = MIMEText(open(EmailSetting['filename'], 'rb').read(), 'base64', 'utf-8')
    att1["Content-Type"] = 'application/octet-stream'
    att1["Content-Disposition"] = 'attachment; filename="test_result.html"'
    message.attach(att1)
    # 发送邮件
    server = smtplib.SMTP(EmailSetting['smtp_server'], EmailSetting['smtp_port'])
    server.set_debuglevel(1)
    server.starttls()
    server.login(EmailSetting['from_addr'], EmailSetting['password'])
    server.sendmail(EmailSetting['from_addr'], EmailSetting['to_addr'], message.as_string())
    server.quit()

EmailSetting中的配置:

代码语言:javascript
复制
EmailSetting = {
    # --------------邮箱信息配置---------------
    'filename': 'C:\\Users\\Administrator\\Desktop\\test_result.html',  # 附件地址
    'from_addr': 'xxx@qq.com',  # 发件人
    'password': '123456',  # 密码
    'to_addr': ['123@qq.com'],  # 收件人,添加多个收件人时用“,”隔开
    'smtp_server': 'smtp.exmail.qq.com',  # 邮箱服务器
    'smtp_port': 25  # 邮箱端口
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com