提供电子邮件服务的协议叫做SMTP(Simple Mail Transfer Protocol)。SMTP为了实现高效发送邮件内容,在其传输层使用了TCP协议。
这就导致了一个问题,必须两台电脑都开机的情况下才能正常工作。
为了解决这个问题,在中间层引用了邮件服务器。这个邮件服务器是会一直连接电源并且在线的。
在上一章《使用SMTP发送邮件》,我们正是登录了该邮件服务器,达到了发送邮件的目的。并且,邮件会被暂存在邮件服务器当中。
那么接收端如何接收邮件?这里就引用了POP协议。
POP协议
POP
协议全为Post Office Protocol
。发送端的邮件根据SMTP
协议将被转发给一直处于插电状态的POP
服务器。客户端再根据POP
协议从POP
服务器接收对方发来的邮件。在这个过程中,为了防止他人盗窃邮件内容,还要进行用户验证。
POP
与SMTP
一样,也是在其客户端与服务器之间通过建立一个TCP连接完成相应操作。POP
的具体命令比较简单,都是ASCII码字符串,应答更是极其简单,只有两种。正常情况下的+OK
,发生错误或异常情况下为-ERR
。
- 登录POP服务器
$telnet pop.126.com 110
POP服务器的端口为110
一旦连接成功,服务器返回:
+OK Welcome to coremail Mail Pop3 Server (126coms[753e2252bd59b8c4a1c2eb6d5fe57cb3s])
- 输入账户名和密码
输入user abc@126.com
并回车
服务器返回+OK core mail
再次输入密码pass 123456
并回车
服务器返回+OK 1718 message(s) [11915346 byte(s)]
和
SMTP
登录不同,这里不使用base64,而是直接使用明文。登录后可以看到返回的邮件总数和大小。
- 列出所有邮件
输入list
并回车
服务器返回
list
+OK 1718 11915346
1 11949
2 70118
3 70298
4 8321
5 8313
6 8475
7 8482
8 8271
9 8382
10 8601
11 9240
12 8800
13 8444
14 8233
15 8215
16 7942
17 71947
18 8564
19 70120
20 9303
.
.
.
获取邮件信息
输入retr 1
并回车
此时应该返回该邮件的完整信息。删除邮件
输入dele 1
并回车
删除邮件1
注意此时并不会立即删除,而是等到
quit
后才会删除
- 退出
输入quit
并回车
认证时的有效命令
指令 | 含义 |
---|---|
USER 用户名 |
发送用户名 |
PASS 用户名 |
发送密码 |
QUIT |
通信结束 |
APOP name digest |
认证 |
应答
指令 | 含义 |
---|---|
+OK |
正常时 |
-ERR |
发生错误时 |
事务状态命令
指令 | 含义 |
---|---|
STAT |
状态通知 |
LIST [msg] |
确认指定邮件大小 |
RETR [msg] |
取的邮件信息 |
DELE [msg] |
删除服务器中保存的邮件(QUIT命令执行时才真正删除) |
RESET |
撤销所有DELE命令,通信结束 |
QUIT |
执行DELE命令,终止通信 |
TOP msg n |
只要邮件的前n行内容 |
UIDL [msg] |
获得该邮件的唯一标识 |