Skip to main content

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: 消息编号