【Selenium学习】自动发送邮件功能

这篇具有很好参考价值的文章主要介绍了【Selenium学习】自动发送邮件功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

自动发送邮件功能是自动化测试项目的重要需求之一,当自动化测试用例运行完成之

后,可自动向相关人员的邮箱发送测试报告。

SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,是一组由源地址到目的

地址传送邮件的规则,可以控制信件的中转方式。Python 的 smtplib 模块提供了简单的 API

用来实现发送邮件功能,它对 SMTP 进行了简单的封装。

在给其他人发送邮件之前,首先需要有一个自己的邮箱。通过浏览器打开邮箱网址(如 www.126.com),或打开邮箱客户端(如 Foxmail),登录自己的邮箱账号。如果是邮箱客户端,则还需要配置邮箱服务器地址(如 smtp.126.com)。然后填写收件人地址、邮件的主题和正文,以及添加附件等。即便通过 Python 实现发送邮件功能,也需要设置这些信息。

Python 自带的发送邮件功能

在发送邮件时,除填写主题和正文外,还可以增加抄送人、添加附件等。这里我们分

别把测试报告作为正文和附件进行发送。

1.发送邮件正文

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

# 发送邮件主题
subject = 'Python email test'

# 编写 HTML 类型的邮件正文
msg = MIMEText('<html><h1>你好!</h1></html>', 'html', 'utf-8')
msg['Subject'] = Header(subject, 'utf-8')

# 发送邮件
smtp = smtplib.SMTP()
smtp.connect("smtp.126.com")
smtp.login("sender@126.com", "a123456")
smtp.sendmail("sender@126.com", "receiver@126.com", msg.as_string())
smtp.quit()

首先,调用 email 模块下面的 MIMEText 类,定义发送邮件的正文、格式,以及编码。

然后,调用 email 模块下面的 Header 类,定义邮件的主题和编码类型。

smtplib 模块用于发送邮件。connect()方法指定连接的邮箱服务;login()方法指定登录

邮箱的账号和密码;sendmail()方法指定发件人、收件人,以及邮件的正文; quit()方法用

于关闭邮件服务器的连接。

2.发送带附件的邮件

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

# 邮件主题
subject = 'Python send email test'

# 发送的附件
with open('log.txt', 'rb') as f:
    send_att = f.read()

att = MIMEText(send_att, 'text', 'utf-8')
att["Content-Type"] = 'application/octet-stream'
att["Content-Disposition"] = 'attachment; filename="log.txt"'

msg = MIMEMultipart()
msg['Subject'] = subject
msg.attach(att)

# 发送邮件
smtp = smtplib.SMTP()
smtp.connect("smtp.126.com")
smtp.login("sender@126.com", "a123456")
smtp.sendmail("sender@126.com", "receiver@126.com", msg.as_string())
smtp.quit()

首先,读取附件的内容。通过 MIMEText 类,定义发送邮件的正文、格式,以及编码;

Content-Type 指定附件内容类型;application/octet-stream 表示二进制流;Content-Disposition

指定显示附件的文件;attachment; filename="log.txt"指定附件的文件名。

然后,使用 MIMEMultipart 类定义邮件的主题,attach()指定附件信息。

最后,通过 smtplib 模块发送邮件,发送过程与第一个例子相同。

用 yagmail 发送邮件

yagmail 是 Python 的一个第三方库,可以让我们以非常简单的方法实现自动发送邮件

功能。

GitHub 项目地址: https://github.com/kootenpv/yagmail。

通过 pip 命令安装。

 pip install yagmail

项目文档提供了的简单发送邮件的例子。

import yagmail

# 连接邮箱服务器
yag = yagmail.SMTP(user="sender@126.com", password="a123456", 
host='smtp.126.com')

# 邮件正文
contents = ['This is the body, and here is just text http://somedomain/image.png',
 'You can find an audio file attached.']

# 发送邮件
yag.send('receiver@126.com', 'subject', contents)

如果想给多个用户发送邮件,那么只需把收件人放到一个 list 中即可。

# 发送邮件
yag.send(['aaa@126.com','bbb@qq.com','ccc@gmail.com'], 'subject', contents)

如果想发送带附件的邮件,那么只需指定本地附件的路径即可。

yag.send('aaa@126.com', 'subject', contents, ["d://log.txt","d://baidu_img.jpg"])

另外,还可以通过 list 指定多个附件。yagmail 库极大地简化了发送邮件的代码。

整合自动发送邮件功能

import time
import unittest
import yagmail
from HTMLTestRunner import HTMLTestRunner

#把测试报告作为附件发送到指定邮箱
def send_mail(report):
    yag = yagmail.SMTP(user="sender@126.com",
                       password="a123456", 
                       host='smtp.126.com')
     subject = "主题,自动化测试报告"
     contents = "正文,请查看附件。"
     yag.send('receiver@126.com', subject, contents, report)
     print('email has send out !')
 
if __name__ == '__main__':
    # 定义测试用例的目录为当前目录
    test_dir = './test_case'
    suit = unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')
    
    # 获取当前日期和时间
    now_time = time.strftime("%Y-%m-%d %H_%M_%S")
    html_report = './test_report/' + now_time + 'result.html'
    with open(report, 'wb') as fp:
        # 调用 HTMLTestRunner,运行测试用例
        runner = HTMLTestRunner(stream=fp,
                                title="百度搜索测试报告",
                                description="运行环境:Windows 10, Chrome 浏览器"
                                )
        runner.run(suit)
    send_mail(html_report) # 发送报告

整个程序的执行过程可以分为两部分:

(1)定义测试报告文件,并赋值给变量 html_report,通过 HTMLTestRunner 运行测试

用例,将结果写入文件后关闭。

(2)调用 send_mail()函数,并传入 html_report 文件。在 send_mail()函数中,把测试报

告作为邮件的附件发送到指定邮箱。

为什么不把测试报告的内容读取出来作为邮件正文发送呢?因为 HTMLTestRunner 报

告在展示时引用了 Bootstrap 样式库,当作为邮件正文“写死”在邮件中时,会导致样式丢

失,所以作为附件发送更为合适。文章来源地址https://www.toymoban.com/news/detail-407084.html

到了这里,关于【Selenium学习】自动发送邮件功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Day18: 发送邮件、开发注册功能

    Day18: 发送邮件、开发注册功能

    在这里记一下。原来的html中的css和js路径下载不下来,需要换成: 我这里使用的是 edu邮箱,好像默认开启了SMTP服务: 导入Jar包(Maven) 配置邮箱参数 在applications.properties中配置: 使用JavaMailSender发送邮件 创建一个包util,表示开发中需要用到的工具类,并创建MailClient工具类

    2024年03月13日
    浏览(11)
  • Spring Email实现邮件发送功能

    Spring Email实现邮件发送功能

    (本篇内容是博主在学习“牛客社区”这个项目时的笔记整理,为了方便自己以后查看,希望也能帮助到其他人。若有不恰当的地方还望指正~) 目录 一、邮箱设置 1. 开启POP3/SMTP服务,获取授权码 二、 使用Spring Email 1. 导入jar包  2. 在项目的propertites文件中写入如下配置 三、

    2023年04月25日
    浏览(14)
  • spring boot 集成邮件发送功能

    spring boot 集成邮件发送功能

    一、首先到QQ邮箱申请开启POP3、SMTP协议 二、安装依赖 三、配置文件 四、如果需要发送模板的邮件,则在/templates/目录下建立email.html文件 五、如果需要异常打印信息的话新建自定义异常类BusinessException 六、如果需要发送附件的话,则新建网络文件转流类 七、测试方法

    2024年01月21日
    浏览(13)
  • Django-配置邮箱功能(一):使用django自带的发送邮件功能

    Django-配置邮箱功能(一):使用django自带的发送邮件功能

    以QQ邮箱为例子: 1、进入到设置,找到账户 2、开启POP3等服务,点击管理服务 3、进入管理服务,生成授权码  4、按照要求发送短信就可以了 5、将授权码复制保存,离开界面就看不到了 1、settings.py配置邮箱服务  2、在视图函数给邮箱发送短信  3、调用请求的api,测试是否

    2024年02月13日
    浏览(14)
  • WordPress实现回复文章评论后发送邮件通知的功能

    本文实例讲述了WordPress实现回复文章评论后发送邮件通知的功能。分享给大家供大家参考,具体如下: 很多时候,人们都希望在自己的评论被管理员回复后会收到通知。该函数的作用就是回复后自动邮件通知评论者。 把下面的代码加到wordpress的主题函数里面,然后修改下邮

    2023年04月24日
    浏览(13)
  • 帝国CMS商城系统实现在线支付后发送订单邮件提醒功能

    本文实例讲述了帝国CMS商城系统实现在线支付后发送订单邮件提醒功能。分享给大家供大家参考,具体如下: 帝国CMS是个强大的内容管理系统,其商城的功能也很强大,当用户下单,支付后我们怎么知道有用户下单了呢?因为我们不能时时刻刻都在网站后台,不断的刷新页面去看

    2023年04月24日
    浏览(42)
  • Python 自动化指南(繁琐工作自动化)第二版:十八、发送电子邮件和短信

    Python 自动化指南(繁琐工作自动化)第二版:十八、发送电子邮件和短信

    原文:https://automatetheboringstuff.com/2e/chapter18/ 检查和回复电子邮件是一项巨大的时间消耗。当然,你不能只写一个程序来帮你处理所有的邮件,因为每封邮件都需要它自己的回应。但是,一旦你知道如何编写可以发送和接收电子邮件的程序,你仍然可以自动完成大量与电子邮件

    2023年04月08日
    浏览(50)
  • Jenkins+Jmeter集成自动化接口测试并通过邮件发送测试报告

    Jenkins+Jmeter集成自动化接口测试并通过邮件发送测试报告

    一、Jenkins的配置 1、新增一个自由风格的项目 2、构建-选择Excute Windows batch command(因为我是在本地尝试的,因此选择的windows) 3、输入步骤:     1. 由于不能拥有相同的jtl文件,因此在每次构建前都需要删除jtl文件     2. 存放jmeter生成的报告文件夹必须为空,因此每次构建

    2024年02月12日
    浏览(14)
  • Python办公自动化 -- Python发送电子邮件和Outlook的集成

    Python办公⾃动化是利⽤Python编程语⾔来创建脚本和程序,以简化、加速和⾃动化⽇常办公任务和⼯作流程的过程。它基于Python的强⼤功能和丰富的第三⽅库,使得能够处理各种办公任务,如⽂档处理、数据分析、电⼦邮件管理、⽹络通信等等。 要使⽤Python发送电⼦邮件,可以

    2024年02月20日
    浏览(11)
  • Spring Schedule:Spring boot整合Spring Schedule实战讲解定时发送邮件的功能

    Spring Schedule:Spring boot整合Spring Schedule实战讲解定时发送邮件的功能

    🎉🎉 欢迎光临,终于等到你啦 🎉🎉 🏅我是 苏泽 ,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏 《Spring 狂野之旅:从入门到入魔》 🚀 本专栏带你从Spring入门到入魔   这是苏泽的个人主页可以看到我其他的内容哦👇👇 努力的苏泽 http://suzee.blog.

    2024年03月14日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包