每篇一句:
It is not our abilities that show what we truly are, it is our choices.
SMTP-POP3协议简介:
SMTP:
简单邮件传输协议,全称:
Simple Mail Transfer Protocol
。SMTP是因特网电子邮件中主要的应用层协议,使用TCP可靠数据传输服务,用于将邮件从发送方的用户代理发送到发送方的邮件服务器,以及将邮件从发送方的邮件服务器发送到接收方的邮件服务器。是一种“推协议”。特点:
- 限制所有邮件报文的文体部分,不只是其首部,只能采用简单的7比特ASCII表示。如果要传输多媒体数据,需要先编码为ASCII编码。(20世纪80年代早期,传输能力不足)
- SMTP一般不使用中间邮件服务器发送邮件,即使这两个邮件服务器位于地球两端。
C-S交互:
SMTP默认使用25端口。首先客户SMTP(C)在25端口建立一个到服务器SMTP(S)的TCP连接。如果服务器没有开机,客户会在稍后继续尝试连接。一旦连接建立,服务器和客户执行某些应用层的握手,SMTP的客户和服务器在传输信息前先相互介绍。在SMTP握手的阶段,SMTP客户说明发送方的邮件地址和接收方的邮件地址。一旦该SMTP客户端和服务器彼此介绍后,客户开始发送报文。该客户如果有另外的报文要发送到此服务器,就在该相同的TCP连接上重复处理。
常用命令:
helo
:向服务器介绍自己auth login
:登录,之后会输入用户名以及密码(base64格式)mail from
: 说明发件方rcpt to
: 说明收件方data
: 之后会提示你输入邮件信息,以"CRLF.CRLF"
结束。quit
: 断开连接
POP3:
第三版的邮局协议,全称:
Post Office Protocol -- Version3
。POP3是一种极为简单的邮件访问协议,同样基于TCP,用于将邮件从接收方的邮件服务器传送到接收方的用户代理。是一种“拉协议”。C-S交互:
POP3默认使用110端口。首先用户代理(客户C)建立了一个到邮件服务器110端口的TCP连接,然后POP3按照三个阶段进行工作:特许(authorization),事务处理以及更新。在第一个阶段即特许阶段,用户代理以名文发送用户名和口令鉴别用户。在第二个阶段即事务处理阶段,用户可以进行以下操作:取回邮件、对邮件做删除标记、取消邮件删除标记、获取邮件的统计信息。在第三个阶段即更新阶段,出现在客户发出了
"quit"
命令之后,结束这次POP3回话。这时,邮件服务器才会删除那些被标记为删除的邮件。常用命令:
user
: 输入用户名pass
: 输入密码list
: 返回关于邮箱的统计:邮件总数、总字节数以及每个邮件的大小list index
: 返回关于第index邮件的统计:总字节数stat
: 返回关于邮箱的统计:邮件总数和总字节数retr index
: 返回第index邮件的内容,以"CRLF.CRLF"
表示邮件结束。dele index
: 对第index邮件加删除标记rset
: 重置所有标记为删除的邮件,用于撤消dele命令quit
: 退出,会执行删除操作
使用Telnet客户端连接163邮箱,收/发邮件
在开始之前,请确认你的163邮箱账户开启了
SMTP/POP
服务,并且开启设置了“授权码”:- 开启SMTP/POP服务:
- 授权码:
提前说明:以下内容中,‘c:’代表客户端输入,’s:’ 代表服务器返回,在Telnet客户端并不显示。
连接163的SMTP服务器发送邮件:
C: telnet smtp.163.com 25 S: 220 163.com Anti-spam GT for Coremail System (163com[20141201]) C: helo localhost # helo 后跟的字符可以随意 S: 250 OK C: auth login S: 334 dXNlcm5hbWU6 C: MTg1Nz****5Njk= # 用户名(不包含@163.com这些), base64编码格式 S: 334 UGFzc3dvcmQ6 C: TGluY***OTk3 # 授权码(注意不是登录时的密码,而是授权码),base64编码格式 S: 235 Authentication successful C: mail from: <185****0969@163.com> # 发送邮件的地址(必须是刚才登录的账户) S: 250 Mail OK C: rcpt to: <143***2536@qq.com> # 目标地址 S: 250 Mail OK C: data # 告知服务器要输入邮件内容 S: 354 End data with <CR><LF>.<CR><LF> C: # 发送给qq邮箱的话,最好包含from、to以及subject,不然可能会拒收 from:185****0969@163.com to:143***2536@qq.com subject:hello hello . S: 250 Mail OK queued as smtp7,C8CowADXW6cjR+Faq3JqQw--.57969S2 1524713356 C: quit S: 221 bye
检查对应QQ邮件的收件箱(或垃圾箱),证明邮件发送成功。
连接163的pop服务器接收邮件:
C: telnet pop.163.com 110 S: +OK Welcome to coremail Mail Pop3 Server (163coms[b62aaa251425b4be4eaec4ab4744cf47s]) C: user 185****0969@163.com # 用户名 S: +OK core mail C: pass L********7 # 授权码 S: +OK 5 message(s) [27351 byte(s)] # 含义:共五个邮件,共27351bytes大小 C: stat S: +OK 5 27351 C: list S: # 邮件的统计信息,以"."结束 +OK 5 27351 1 2731 2 3393 3 7339 4 3305 5 10583 . C: list 1 S: +OK 1 2731 # 第一个邮件的信息 C: retr 1 S: # 第一个邮件的内容 +OK 2731 octets ***** . C: dele 1 # 对第一个邮件添加删除标记 S: +OK core mail C: rset # 重置所有标记为删除的邮件,撤消dele命令 S: +OK core mail C: quit # 退出服务器 S: +OK core mail
特别需要注意的是:
mail from
与rcpt to
命令中“:
”前无空格,后加一个空格再接其他信息。所有命令以及数据最好一次输入正确,不要有任何修改,否则可能会报
502 Error: command not implemented
或500 Error: bad syntax
的错误。- 确认命令输入无误,还是报错,请再次尝试,可能是服务器较为繁忙。
参考资料:
- 计算机网络-自顶向下方法(原书第六版)
如果本文有什么错误或不足之处,欢迎指出。