5. 事务状态 (The TRANSACTION State)
一旦客户端成功向POP3服务器标识自己,并且POP3服务器已锁定并打开了适当的邮件投递箱,POP3会话现在处于事务状态 (TRANSACTION state)。客户端现在可以重复发出以下任何POP3命令。每个命令后,POP3服务器发出响应。最终,客户端发出QUIT命令,POP3会话进入更新状态 (UPDATE state)。
以下是在事务状态中有效的POP3命令:
STAT 命令
参数 (Arguments): 无
限制 (Restrictions): 只能在事务状态中给出
讨论 (Discussion): POP3服务器发出正面响应,其中包含邮件投递箱信息的行。此行称为该邮件投递箱的"投递箱列表 (drop listing)"。正面响应由"+OK"后跟一个空格、邮件投递箱中的消息数、一个空格和邮件投递箱的八位字节大小组成。标记为已删除的消息不计入任何总数中。
可能的响应 (Possible Responses):
+OK nn mm
示例 (Examples):
C: STAT
S: +OK 2 320
LIST 命令
格式 (Format): LIST [msg]
参数 (Arguments): 消息编号(可选),如果存在,不得引用标记为已删除的消息
限制 (Restrictions): 只能在事务状态中给出
讨论 (Discussion): 如果给出了参数并且POP3服务器发出正面响应,则响应包含该消息的信息行。如果没有给出参数并且POP3服务器发出正面响应,则响应是多行的,邮件投递箱中的每条消息一行。
可能的响应 (Possible Responses):
+OK(后跟消息列表)
示例 (Examples):
C: LIST
S: +OK 2 messages (320 octets)
S: 1 120
S: 2 200
S: .
RETR 命令
格式 (Format): RETR msg
参数 (Arguments): 消息编号(必需),不得引用标记为已删除的消息
限制 (Restrictions): 只能在事务状态中给出
讨论 (Discussion): 如果POP3服务器发出正面响应,则响应是多行的。在初始+OK之后,POP3服务器发送与给定消息编号对应的消息,注意字节填充终止字符(与所有多行响应一样)。
可能的响应 (Possible Responses):
+OK(后跟消息内容)-ERR
示例 (Examples):
C: RETR 1
S: +OK 120 octets
S: <完整的消息内容>
S: .
DELE 命令
格式 (Format): DELE msg
参数 (Arguments): 消息编号(必需),不得引用标记为已删除的消息
限制 (Restrictions): 只能在事务状态中给出
讨论 (Discussion): POP3服务器将消息标记为已删除。任何对与消息关联的消息编号的未来引用都将导致错误。POP3服务器在进入更新状态之前不会实际删除消息。
可能的响应 (Possible Responses):
+OK-ERR
示例 (Examples):
C: DELE 1
S: +OK message 1 deleted
NOOP 命令
参数 (Arguments): 无
限制 (Restrictions): 只能在事务状态中给出
讨论 (Discussion): POP3服务器不执行任何操作,它只是以正面响应回复。
可能的响应 (Possible Responses):
+OK
示例 (Examples):
C: NOOP
S: +OK
RSET 命令
参数 (Arguments): 无
限制 (Restrictions): 只能在事务状态中给出
讨论 (Discussion): 如果POP3服务器已将任何消息标记为已删除,则取消标记。然后POP3服务器以正面响应回复。
可能的响应 (Possible Responses):
+OK
示例 (Examples):
C: RSET
S: +OK maildrop has 2 messages (320 octets)
术语表 (Glossary):
- TRANSACTION state (事务状态): 主要操作阶段
- drop listing (投递箱列表): 邮箱状态摘要
- byte-stuff (字节填充): 转义特殊字符的方法
- message-number (消息编号): 消息的数字标识符
- octets (八位字节): 8位字节