5. The TRANSACTION State (事务状态)
一旦客户端成功向POP3服务器标识自己, 并且POP3服务器锁定并打开了适当的邮箱, POP3会话现在处于事务状态 (TRANSACTION state). 客户端现在可以 (may) 重复发出以下任何POP3命令. 每个命令后, POP3服务器发出响应. 最终, 客户端发出QUIT命令, POP3会话进入更新状态 (UPDATE state).
以下是在事务状态下有效的POP3命令:
STAT Command
参数 (Arguments): 无
限制 (Restrictions): 只能在事务状态下使用
讨论 (Discussion): POP3服务器发出包含邮箱信息行的正面响应. 此行称为该邮箱的"drop listing". 正面响应包括"+OK", 后跟一个空格、邮箱中的消息数量、一个空格以及邮箱大小 (以八位字节为单位). 标记为已删除的消息不计入总数.
可能的响应 (Possible Responses):
+OK nn mm
示例 (Examples):
C: STAT
S: +OK 2 320
LIST Command
格式: 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 Command
格式: RETR msg
参数 (Arguments): 消息编号, 不得引用标记为已删除的消息
限制 (Restrictions): 只能在事务状态下使用
讨论 (Discussion): 如果POP3服务器发出正面响应, 则响应是多行的. 在初始的+OK之后, POP3服务器发送由该消息对应的文本构成的消息.
可能的响应 (Possible Responses):
+OK(后跟消息内容)-ERR
示例 (Examples):
C: RETR 1
S: +OK 120 octets
S: <完整的邮件内容>
S: .
DELE Command
格式: DELE msg
参数 (Arguments): 消息编号, 不得引用标记为已删除的消息
限制 (Restrictions): 只能在事务状态下使用
讨论 (Discussion): POP3服务器将消息标记为已删除. 任何针对已标记为已删除的消息的将来引用都会导致错误. POP3服务器在进入更新状态之前不会实际删除任何消息.
可能的响应 (Possible Responses):
+OK-ERR
示例 (Examples):
C: DELE 1
S: +OK message 1 deleted
NOOP Command
参数 (Arguments): 无
限制 (Restrictions): 只能在事务状态下使用
讨论 (Discussion): POP3服务器不执行任何操作, 只是响应正面响应.
可能的响应 (Possible Responses):
+OK
示例 (Examples):
C: NOOP
S: +OK
RSET Command
参数 (Arguments): 无
限制 (Restrictions): 只能在事务状态下使用
讨论 (Discussion): 如果给定了任何消息, POP3服务器将取消标记为已删除的所有消息. POP3服务器然后响应正面响应.
可能的响应 (Possible Responses):
+OK
示例 (Examples):
C: RSET
S: +OK maildrop has 2 messages (320 octets)
术语表:
- TRANSACTION state: 事务状态
- drop listing: 邮箱列表
- scan listing: 扫描列表
- message-number: 消息编号