下面是对上述三条命令的总结:
user name
指定邮箱的字符串,这对服务器至关重要,仅在user和pass命令失败后或在"确认"状态中使用
+ok:有效邮箱;
-err:无效邮箱
c: user mrose
s: +ok mrose is a real hoopy frood
...
c: user frated
s: -err sorry, no mailbox for frated here
pass string
口令仅在"确认"状态中user命令成功后使用(因为此命令只有一个参数,因此空格不再作为分隔符,而作为口令的一部分)
+ok:邮件锁住并已经准备好;
-err:无效口令或无法锁住邮件
c: user mrose
s: +ok mrose is a real hoopy frood
c: pass secret
s: +ok mrose’s maildrop has 2 messages (320 octets)
...
c: user mrose s: +ok mrose is a real hoopy frood
c: pass secret
s: -err maildrop already locked
quit
(无)
(无)
+ok
c: quit
s: +ok dewey pop3 server signing off
"操作"状态
一旦客户向服务器成功地确认了自己的身份,服务器将锁住并打开相应的邮件,这时pop3会话进入"操作"状态。现在客户可以重复下面的pop3命令,对于每个命令服务器都会返回应答。最后,客户发送quit命令,会话进入"更新"状态。 下面是在"操作"状态中可用的命令:
stat
(无)
仅在"操作"状态下可用。服务器以包括邮件信息的响应做为"确认"。为简化语法分析,所有的服务器要求使用邮件列表的特定格式。"确认"响应由一个空格,以八进制表示的邮件数目,一个空格和邮件大小。这是最小实现,高级的实现还需要别的信息。 注意:被标记为删除的信件不在此列。
+ok: nn mm
c: stat
s: +ok 2 320
list [msg]
信件数目(可选),如果出现,不包括标记为删除的信件。仅在"操作"状态下可用。如果给出了参数,且pop3服务器返回包括上述信息的"确认",此行称为信息的"扫描表"。 如果没有参数,服务器返回"确认"响应,此响应便以多行给出。在初的+ok后,对于每个信件,服务器均给出相应的响应。为简化语法分析,所有服务器要求使用扫描表的特定格式。它包括空格,每个邮件的确切大小。这是最小实现,高级的实现还需要别的信息。注意:被标记为删除的信件不在此列。
+ok:其后跟扫描表;
-err:无扫描。
c: list
s: +ok 2 messages (320 octets)
s: 1 120
s: 2 200
s: .
...
c: list 2
s: +ok 2 200
...
c: list 3
s: -err no such message, only 2 messages in maildrop
retr msg
不包括标记为删除的信件数目。仅在"操作"状态下可用。
如果服务器返回"确认",给出的响应是多行的。在初始的+ok后,服务器发送与给定信息号对应的信息,对于多行响应,注意字节填充终止符。
+ok:消息在其后;
-err:其后无消息。
c: retr 1
s: +ok 120 octets
s: the pop3 server sends the entire message here>
s: .
dele msg
不包括标记为删除的信件数目。
仅在"操作"状态下可用。
服务器将此信件标记为删除,以后任何关于此信件的操作就会产生错误。服务器在会话进入"更新"状态前不会真正删除此信件。
+ok:信件被删除;
-err:无此信件。
c: dele 1
s: +ok message 1 deleted
...
c: dele 2
s: -err message 2 already deleted
noop
(无)
仅在"操作"状态下可用。服务器仅返回"确认"。
+ok
c: noop
s: +ok
rset
(无)
仅在"操作"状态下可用。所有被标记为删除的信件复位,服务器返回"确认"。
+ok
c: rset
s: +ok maildrop has 2 messages (320个字符)