热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

(五十)自动化测试高级应用之自动发邮件功能发送HTML格式的邮箱

随笔记录方便自己和同路人查阅。#我是可耻的分割线学习selenium自动化之前,最好先学习HTML、CSS、JavaScript等知识,有助于理解定位及操作元素的原理。关于p

随笔记录方便自己和同路人查阅。

#------------------------------------------------我是可耻的分割线-------------------------------------------

  学习selenium自动化之前,最好先学习HTML、CSS、Javascript等知识,有助于理解定位及操作元素的原理。关于python和selenium安装请自行搜索别的资料,这里就不多做介绍了,所有例子均使用python3.6+selenium执行的。

#------------------------------------------------我是可耻的分割线-------------------------------------------

自动发邮件功能

自动发邮件功能也是自动化测试项目的重要需求之一。例如,我们想在自动化脚本运行完成之后,邮箱就可以收到最新的测试报告结果。假设生成的测试报告与多人相关,每个人都去测试服务器查看就会比较麻烦,如果把这种主动的且不及时的查看变成被动且即使的查收,就方便多了。

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

Pythonsmtplib模块提供了一种很方便的途径用来发送点击邮件。它对SMTP协议进行了简单的封装。我们可以使用SMTP对象的sendmail方法发送邮件,通过help()查看SMTP所提供的方法如下:

 

 

 

导入SMTP对象,通过help()查看对象的注释,从中找到sendmail()方法的使用说明。

 

connect(host,port)方法参数说明如下。

 

host:指定链接的邮箱服务器。

 

port:指定链接服务器的端口号。

 

login(user,password)方法参数说明如下。

 

user:登录邮箱用户用。

 

password:登录邮箱密码。

 

sendmail(from_addr,to_addrs,msg...)方法参数说明如下。

 

from_addr:邮件发送者地址。

 

to_addrs;字符串列表,邮件发送地址。

 

Msg:发送消息。

 

quit()方法:用于结束SMTP会话。

 

一般我们发邮件有两种方式。方式一:自己邮箱的Web页面(如mail.126.com),输入自己邮箱的用户名和密码登录,打开发邮件页面,填写对方的而邮箱地址及邮件标题与正文,完成后单击发送。方式二:下载安装邮箱客户端(如OutlookFoxmail等),填写邮箱账号、密码及邮箱服务器(如smtp.126.com),一般的邮箱客户端会默认几下这些信息,所以,这个过程只需填写一次,后面发邮件的过程与方法一相同。

 

而我们通过PythonSMTP对象发邮件则更像方式二,因为需要填写邮箱服务器。

 

当然,在具体发邮件时会涉及诸多需要,例如,邮件正文的格式、是否带图片、邮件是否需要添加附件(及多附件)、邮件是否需要同时向多人发送等。

发送HTML格式的邮箱

新建send_mail.py文件

 

# !/usr/bin/env python
# -*- coding: UTF-8 –*-
__author__ = \'Mr.Li\'
import smtplib
from email.mime.text import MIMEText
from email.header import Header

#发送邮箱服务器
smtpserver = \'smtp.qq.com\'
#发送邮箱用户/密码
user = XXXXX@qq.com\'
password = \'XXXXX\'
#发送邮箱
sender = XXXXX@qq.com\'
#接收邮箱
receiver = XXXXX@qq.com\'
#发送邮件主题
subject = \'Python email test\'

#编写HTML类型邮件正文
msg = MIMEText(\'

你好!

\',\'html\',\'utf-8\') msg[\'Subject\'] = Header(subject,\'utf-8\') #链接发送邮件 smtp = smtplib.SMTP() smtp.connect(smtpserver) smtp.login(user,password) smtp.sendmail(sender,receiver,msg.as_string()) smtp.quit()

 

运行后会报错:

 

这是因为这个异常的原因不是你的邮箱密码错误,而是因为你要在smtp第三方客户端登录,需要获得你qq邮箱的授权码,

也就是说,在password这里你应该填入授权码,而不是你的邮箱密码。那么授权码是什么呢(参考邮箱帮助中心),又如何获得授权码呢?

 http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256

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

#发送邮箱服务器
smtpserver = \'smtp.qq.com\'
#发送邮箱用户/密码
user = xxxx@qq.com\'
password = \'mbnzfxlnmwbkbcfb\'#这里不能填写邮箱密码而是填写邮箱授权码
#发送邮箱
sender = xxxx@qq.com\'
#接收邮箱
receiver = \'xxxx@qq.com\'
#发送邮件主题
subject = \'Python email test\'

#编写HTML类型邮件正文
msg = MIMEText(\'

你好!

\',\'html\',\'utf-8\') msg[\'Subject\'] = Header(subject,\'utf-8\') #链接发送邮件 smtp = smtplib.SMTP() smtp.connect(smtpserver) smtp.login(user,password) smtp.sendmail(sender,receiver,msg.as_string()) smtp.quit()

这样运行过后接收邮箱就收到了发送信息。

本例中,除SMTP模块外,我们还用到了email模块,它主要用来定义邮件的标题和正文:Header()方法用来定义邮件标题;MIMEText()用于定义邮件正文,参数为html格式的文本。登入receive邮箱,查看邮箱内容如下图:


推荐阅读
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 本文介绍了NetCore WebAPI开发的探索过程,包括新建项目、运行接口获取数据、跨平台部署等。同时还提供了客户端访问代码示例,包括Post函数、服务器post地址、api参数等。详细讲解了部署模式选择、框架依赖和独立部署的区别,以及在Windows和Linux平台上的部署方法。 ... [详细]
author-avatar
迷失刀
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有