美文网首页
理解邮件推拉SMTP&POP3

理解邮件推拉SMTP&POP3

作者: Chreyl_1d33 | 来源:发表于2018-09-07 20:01 被阅读0次

【前言】作为一名测试小白,如果有天被问到:测试邮件发送、接收?
这种该如何测呢?那首先,结合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.其他:
安全性考虑,传输加密;
时效性考虑,实时收发;
用户认证,登陆有效期;
稳定性,大用户量并发;
需求性,满足客户需求;

相关文章

  • 理解邮件推拉SMTP&POP3

    【前言】作为一名测试小白,如果有天被问到:测试邮件发送、接收?这种该如何测呢?那首先,结合python来理解下邮件...

  • SMTP协议

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议。 邮件协议的理解 首先要...

  • 推拉门的优缺点及其使用的注意事项

    推拉门是现代门的一个重要类型,与普通门的开启方式不同,推拉门大多是横向平移式推拉开启或者折叠推拉开启式,推拉门之所...

  • javaMail(三)

    之前理解了发邮件,这次这不就轮到收邮件(解析邮件)了。其实解析邮件内容一直在用,直到最近有一个需求是将邮件转移文件...

  • 推拉

    美国“tuixiao大王”乔·吉拉德刚开始工作时候,把搜集到的顾客资料写在纸上,塞进抽屉里。 他一直想整理一份儿顾...

  • 微信原生组件|基于小程序实现音视频通话

    1 微信小程序原生推拉流组件功能简介 本文将介绍如何使用微信小程序原生推拉流组件 和 进行推拉流,快速实现...

  • 【邮件营销】怎样做好邮件营销?

    森哥今天给大家讲解一个最笨的方法去做好邮件营销。 邮件营销很好理解,就是我们群发邮件给我们所收集的精准邮箱。但是注...

  • 推拉窗哪个品牌好,为什么大家都选择推拉窗

    面对现在的家居装修流行趋势,推拉窗受到越来越多用户的追捧。为此,推拉窗品牌到底哪个好?为什么大家都选择推拉窗?下面...

  • 推拉理论

    推力,拉力。 逃离北上广的理由,北上广的不好,另一个地方好。 如果留有空格,重点抄材料的首尾句,转折之后的表述,不...

  • 推拉思维

    女生发一张和闺蜜的合影。 男:如果我说你闺蜜比你好看一点,你会不会生气(推)。 女:你猜猜。 男:我说不出口,这种...

网友评论

      本文标题:理解邮件推拉SMTP&POP3

      本文链接:https://www.haomeiwen.com/subject/amtriftx.html