跳到主要内容

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位字节