跳到主要内容

6.3.4 CREATE 命令

参数: mailbox 名称

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

结果:

  • OK - create 已完成
  • NO - create 失败: 无法以该名称创建 mailbox
  • BAD - 命令未知或参数无效

CREATE 命令创建具有给定名称的 mailbox. 只有当具有该名称的新 mailbox 已被创建时, 才返回 OK 响应. 尝试创建 INBOX 或名称指向现有 mailbox 的 mailbox 是错误. 创建期间的任何错误都会返回带标签的 NO 响应. 如果客户端尝试创建不是有效 Net-Unicode 名称的 UTF-8 mailbox 名称, 服务器 MUST 拒绝创建, 或在创建 mailbox 之前将该名称转换为 Net-Unicode. 如果服务器决定转换 (规范化) 该名称, 它 SHOULD 返回带有 OLDNAME 扩展数据项的不带标签 LIST, 其中 OLDNAME 值为提供的 mailbox 名称, name 参数为规范化后的 mailbox 名称. (更多细节见第 6.3.9.7 节.)

在一个 IMAP session 中创建的 mailbox MAY 使用未请求的 LIST 响应通告给其他 IMAP session. 如果服务器在创建 mailbox 时自动订阅该 mailbox, 则针对每个受影响的已订阅 mailbox 名称的未请求 LIST 响应 MUST 包含 \Subscribed attribute.

如果 mailbox 名称以后缀形式包含服务器的层级分隔符字符 (由服务器通过 LIST 命令返回), 这表示客户端声明它打算在层级结构中此名称之下创建 mailbox 名称. 不要求这种声明的服务器实现 MUST 忽略该声明. 在任何情况下, 创建的名称都不包含尾随层级分隔符.

如果服务器的层级分隔符字符出现在名称的其他位置, 服务器 SHOULD 创建 CREATE 命令成功完成所需的任何上级层级名称. 换言之, 在以 "/" 作为层级分隔符字符的服务器上尝试创建 "foo/bar/zap" 时, 如果 foo/ 和 foo/bar/ 尚不存在, SHOULD 创建它们.

如果新 mailbox 使用与已删除 mailbox 相同的名称创建, 则其唯一标识符 MUST 大于该 mailbox 前一个实例使用过的任何唯一标识符, 除非新实例具有不同的唯一标识符有效性值. 更多细节见第 6.4.9 节中 UID 命令的描述.

示例:

C: A003 CREATE owatagusiam/
S: A003 OK CREATE completed
C: A004 CREATE owatagusiam/blurdybloop
S: A004 OK CREATE completed
C: A005 CREATE NonNormalized
S: * LIST () "/" "Normalized" ("OLDNAME" ("NonNormalized"))
S: A005 OK CREATE completed

(在最后一个示例中, 假设 "NonNormalized" 是非 NFC 规范化的 Unicode mailbox 名称, 而 "Normalized" 是其 NFC 规范化版本.)

注意: 此示例的解释取决于 LIST 是否返回 "/" 作为层级分隔符. 如果 "/" 是层级分隔符, 则会创建一个名为 "owatagusiam" 的新层级, 其中包含名为 "blurdybloop" 的成员. 否则, 会在同一层级级别创建两个 mailbox.