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

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

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

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

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

自动发邮件功能

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

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

Python的smtplib模块提供了一种很方便的途径用来发送点击邮件。它对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),输入自己邮箱的用户名和密码登录,打开发邮件页面,填写对方的而邮箱地址及邮件标题与正文,完成后单击发送。方式二:下载安装邮箱客户端(如Outlook、Foxmail等),填写邮箱账号、密码及邮箱服务器(如smtp.126.com),一般的邮箱客户端会默认几下这些信息,所以,这个过程只需填写一次,后面发邮件的过程与方法一相同。

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

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

发送HTML格式的邮箱

新建send_mail.py文件

#!/usr/bin/env python#-*- coding: UTF-8 –*-

__author__ = 'Mr.Li'

importsmtplibfrom email.mime.text importMIMETextfrom email.header importHeader#发送邮箱服务器

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('

你好!

1.支持发送邮件和远端文件下载两个功能Demo,环境MyEclipse 6.0.1+jdk1.6 2.import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import org.apache.http.HttpEntity; import org.apache.http.HttpHost; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; public class SearchDomain { public static void main(String[] args) throws ClientProtocolException, IOException { //实例化一个HttpClient HttpClient httpClient = new DefaultHttpClient(); //设定目标站点 web的默认端口80可以不写的 当然如果是其它端口就要标明 HttpHost httpHost = new HttpHost("127.0.0.1",80); //设置需要下载的文件 HttpGet httpGet = new HttpGet("/fax/temp/284/201205171022522920.doc"); //这里也可以直接使用httpGet的绝对地址,当然如果不是具体地址不要忘记/结尾 //HttpGet httpGet = new HttpGet("http://www.0431.la/"); //HttpResponse response = httpClient.execute(httpGet); HttpResponse response = httpClient.execute(httpHost, httpGet); if(HttpStatus.SC_OK==response.getStatusLine().getStatusCode()){ //请求成功 //取得请求内容 HttpEntity entity = response.getEntity(); //显示内容 if (entity != null) { //这里可以得到文件的类型 如image/jpg /zip /tiff 等等 但是发现并不是十分有效,有时明明后缀是.rar但是取到的是null,这点特别说明 System.out.println(entity.getContentType()); //可以判断是否是文件数据流 System.out.println(entity.isStreaming()); //设置本地保存的文件 File storeFile = new File("e:/111.doc"); FileOutputStream output = new FileOutputStream(storeFile); //得到网络资源并写入文件 InputStream input = entity.getContent(); byte b[] = new byte[1024]; int j = 0; while( (j = input.read(b))!=-1){ output.write(b,0,j); } output.flush(); output.close(); } if (entity != null) { entity.consumeContent(); } } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值