跳到主要内容

6.3.5 DELETE 命令

参数: mailbox 名称

响应: OPTIONAL 的不带标签响应: LIST

结果:

  • OK - delete 已完成
  • NO - delete 失败: 无法删除具有该名称的 mailbox
  • BAD - 命令未知或参数无效

DELETE 命令永久移除具有给定名称的 mailbox. 只有当该 mailbox 已被删除时, 才返回带标签的 OK 响应. 尝试删除 INBOX 或不存在的 mailbox 名称是错误.

DELETE 命令 MUST NOT 移除下级层级名称. 例如, 如果 mailbox "foo" 有一个下级 "foo.bar" (假设 "." 是层级分隔符字符), 移除 "foo" MUST NOT 移除 "foo.bar". 尝试删除既有下级层级名称又具有 \Noselect mailbox name attribute 的名称是错误 (更多细节见 LIST 响应的描述 (第 7.3.1 节)).

允许删除具有下级层级名称且不具有 \Noselect mailbox name attribute 的名称. 如果服务器实现不允许在存在下级层级名称时删除该名称, 则它 SHOULD 通过返回带标签 NO 响应来禁止 DELETE 命令. NO 响应 SHOULD 包含 HASCHILDREN response code. 或者, 服务器 MAY 允许 DELETE 命令, 但为该名称设置 \Noselect mailbox name attribute.

如果服务器返回 OK 响应, 则该 mailbox 中的所有消息都由 DELETE 命令移除.

已删除 mailbox 的最高已用唯一标识符值 MUST 被保留, 以便使用相同名称创建的新 mailbox 不会重用前一个实例的标识符, 除非新实例具有不同的唯一标识符有效性值. 更多细节见第 6.4.9 节中 UID 命令的描述.

如果服务器决定转换 (规范化) mailbox 名称, 它 SHOULD 返回带有 "\NonExistent" attribute 和 OLDNAME 扩展数据项的不带标签 LIST, 其中 OLDNAME 值为提供的 mailbox 名称, name 参数为规范化后的 mailbox 名称. (更多细节见第 6.3.9.7 节.)

在一个 IMAP session 中删除的 mailbox MAY 使用包含 "\NonExistent" attribute 的未请求 LIST 响应通告给其他 IMAP session.

示例:

C: A682 LIST "" *
S: * LIST () "/" blurdybloop
S: * LIST (\Noselect) "/" foo
S: * LIST () "/" foo/bar
S: A682 OK LIST completed
C: A683 DELETE blurdybloop
S: A683 OK DELETE completed
C: A684 DELETE foo
S: A684 NO Name "foo" has inferior hierarchical names
C: A685 DELETE foo/bar
S: A685 OK DELETE Completed
C: A686 LIST "" *
S: * LIST (\Noselect) "/" foo
S: A686 OK LIST completed
C: A687 DELETE foo
S: A687 OK DELETE Completed

示例:

C: A82 LIST "" *
S: * LIST () "." blurdybloop
S: * LIST () "." foo
S: * LIST () "." foo.bar
S: A82 OK LIST completed
C: A83 DELETE blurdybloop
S: A83 OK DELETE completed
C: A84 DELETE foo
S: A84 OK DELETE Completed
C: A85 LIST "" *
S: * LIST () "." foo.bar
S: A85 OK LIST completed
C: A86 LIST "" %
S: * LIST (\Noselect) "." foo
S: A86 OK LIST completed