mailbox 您所在的位置:网站首页 回复邮件的标准格式 mailbox

mailbox

#mailbox | 来源: 网络整理| 查看: 265

Mailbox 的一个子类,用于 Maildir 格式的邮箱。 形参 factory 是一个可调用对象,它接受一个文件类消息表示形式(其行为相当于以二进制模式打开)并返回一个自定义的表示形式。 如果 factory 为 None,则会使用 MaildirMessage 作为默认的消息表示形式。 如果 create 为 True,则当邮箱不存在时会创建它。

如果 create 为 True 且 dirname 路径存在,它将被视为已有的 maildir 而无需尝试验证其目录布局。

使用 dirname 这个名称而不使用 path 是出于历史原因。

Maildir 是一种基于目录的邮箱格式,它是针对 qmail 邮件传输代理而发明的,现在也得到了其他程序的广泛支持。 Maildir 邮箱中的消息存储在一个公共目录结构中的单独文件内。 这样的设计允许 Maildir 邮箱被多个彼此无关的程序访问和修改而不会导致数据损坏,因此文件锁定操作是不必要的。

Maildir 邮箱包含三个子目录,分别是: tmp, new 和 cur。 消息会不时地在 tmp 子目录中创建然后移至 new 子目录来结束投递。 后续电子邮件客户端可能将消息移至 cur 子目录并将有关消息状态的信息存储在附带到其文件名的特殊 "info" 小节中。

Courier 电子邮件传输代理所引入的文件夹风格也是受支持的。 主邮箱中任何子目录只要其名称的第一个字符是 '.' 就会被视为文件夹。 文件夹名称会被 Maildir 表示为不带前缀 '.' 的形式。 每个文件夹自身都是一个 Maildir 邮箱但不应包含其他文件夹。 逻辑嵌套关系是使用 '.' 来划定层级,例如 "Archived.2005.07"。

备注

Maildir 规范要求使用在特定消息文件名中使用冒号 (':')。 但是,某些操作系统不允许将此字符用于文件名,如果你希望在这些操作系统上使用类似 Maildir 的格式,你应当指定改用另一个字符。 叹号 ('!') 是一个受欢迎的选择。 例如:

import mailbox mailbox.Maildir.colon = '!'

colon 属性也可以在每个实例上分别设置。

Maildir 实例具有 Mailbox 的所有方法及下列附加方法:

list_folders()¶

返回所有文件夹名称的列表。

get_folder(folder)¶

返回表示名称为 folder 的文件夹的 Maildir 实例。 如果文件夹不存在则会引发 NoSuchMailboxError 异常。

add_folder(folder)¶

创建名称为 folder 的文件夹并返回表示它的 Maildir 实例。

remove_folder(folder)¶

删除名称为 folder 的文件夹。 如果文件夹包含任何消息,则将引发 NotEmptyError 异常且该文件夹将不会被删除。

clean()¶

从邮箱中删除最近 36 小时内未被访问过的临时文件。 Maildir 规范要求邮件阅读程序应当时常进行此操作。

Maildir 所实现的某些 Mailbox 方法值得进行特别的说明:

add(message)¶ __setitem__(key, message)¶ update(arg)¶

警告

这些方法会基于当前进程 ID 来生成唯一文件名。 当使用多线程时,可能发生未被检测到的名称冲突并导致邮箱损坏,除非是对线程进行协调以避免使用这些方法同时操作同一个邮箱。

flush()¶

对 Maildir 邮箱的所有更改都会立即被应用,所以此方法并不会做任何事情。

lock()¶ unlock()¶

Maildir 邮箱不支持(或要求)锁定操作,所以此方法并不会做任何事情。

close()¶

Maildir 实例不保留任何打开的文件并且下层的邮箱不支持锁定操作,所以此方法不会做任何事情。

get_file(key)¶

根据主机平台的不同,当返回的文件保持打开状态时可能无法修改或移除下层的消息。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有