【前言】作为一名测试小白,如果有天被问到:测试邮件发送、接收?
这种该如何测呢?那首先,结合python来理解下邮件推拉协议吧
【正文】
SMTP:邮件发送协议;
POP3:邮件拉取协议(当然,现在都是IAMP用的较多,POP3是单向的);
理解推拉协议:
上图中,Alice要发送邮件,他在用户代理(可以理解为电脑里的Foxmail应用程序)中编辑好邮件后,通过SMTP协议将邮件发送到他的邮件服务器,此邮件被加入到邮件服务器的发送邮件队列中,然后Alice的邮件服务器再通过SMTP协议将此邮件发送到Bob的邮件服务器中。当Bob打开用户代理,用户代理和Bob的邮件服务器建立好TCP连接后,POP3按照3个阶段开始工作:
1、特许阶段:用户代理发送用户名和口令--鉴别用户;
2、事务处理阶段:用户代理取回报文;还可以对报文做删除标记,取消报文删除标记,以及获取邮件的统计信息;
3、更新阶段:结束该POP3会话;这个时候该邮件服务器删除那些被标记的删除的报文;
在POP3事务处理的过程中,用户代理发出指令,服务器对每个指令做出回答;
看看python中怎么实现邮件推拉的:
1.发送邮件:
Python对SMTP支持有两个模块:email负责构造邮件,smtplib负责发送邮件
from email.mime.text import MIMEText
import smtplib
msg = MIMEText('hello, send by Python...', 'plain', 'utf-8')
from_addr = input('From: ') //输入Email地址和口令
password = input('Password: ')
to_addr = input('To: ') //输入收件人地址
smtp_server = input('SMTP server: ') //输入SMTP服务器地址
server = smtplib.SMTP(smtp_server, 25) # SMTP协议默认端口是25
server.set_debuglevel(1) //打印出和SMTP服务器交互的所有信
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string()) //可以一次发给多个人,所以传入一个list
server.quit()
2.收取邮件:
Python内置一个poplib模块,实现了POP3协议,可用来收邮件。POP3协议收取的不是一个已经可以阅读的邮件本身,而是邮件的原始文本,这和SMTP协议很像,SMTP发送的也是经过编码后的一大段文本。要把POP3收取的文本变成可以阅读的邮件,还需要用email模块提供的各种类来解析原始文本,变成可阅读的邮件对象。
所以,收取邮件分两步:
第一步:用poplib把邮件的原始文本下载到本地;
第二步:用email解析原始文本,还原为邮件对象;
import poplib
from email.parser import Parser
from email.header import decode_header
from email.utils import parseaddr
email = input('Email: ')//输入邮件地址, 口令和POP3服务器地址
password = input('Password: ')
pop3_server = input('POP3 server: ')
server = poplib.POP3(pop3_server)//连接到POP3服务器
server.set_debuglevel(1)
server.user(email)//身份认证
server.pass_(password)
print('Messages: %s. Size: %s' % server.stat())//stat()返回邮件数量和占用空间
resp, mails, octets = server.list()// list()返回所有邮件的编号
index = len(mails)//获取最新一封邮件, 注意索引号从1开始
resp, lines, octets = server.retr(index)
msg_content = b'\r\n'.join(lines).decode('utf-8')//lines存储了邮件原始文本的每一行
msg = Parser().parsestr(msg_content)//解析出邮件,这里就不细说
server.dele(index)//可以根据邮件索引号直接从服务器删除邮件
server.quit()//# 关闭连接
好了,理解了简单的协议,如何测试邮件推拉整体功能呢?
明确要测什么? ---smtp协议,pop3协议,客户端,邮件服务器?
首先排除掉协议和服务器,协议用了这么久自然有用户来检验,而邮件服务器,现在我们一般使用的都是三方提供的,菜鸟本鸟也并没有接触过服务器测试==。所以下面就说下关于邮件推拉整体的功能测试一些想法吧(尽管不会有这种问题...
a. 冒烟测试主功能:能编辑信息、能发送信息、能收到信息;
b.界面友好,信息完善(编辑信息界面、查看信息界面--发件人、收件人、主题、内容)
c.功能有哪些分类呢?这里考虑等价类:
邮件内容:文本、链接、图片、附件;
收件人:一个、多个;
主题:中英文、特殊字符、表情符;
支持邮件处理:增删改查;刷新;转发;
d.功能支持的上限?考虑边界值:
内容超长?附件最多数量?文件大小?图片大小?收件人数量?附件有效存储期?邮件服务器容量?
e.友好提示:为空提示?失败成功提示?非法操作提示?
d.其他:
安全性考虑,传输加密;
时效性考虑,实时收发;
用户认证,登陆有效期;
稳定性,大用户量并发;
需求性,满足客户需求;
网友评论