18.1.3. email.generator:生成 MIME 文档

最常见的任务之一是生成由消息对象结构表示的电子邮件的纯文本。如果要passsmtplib模块或nntplib模块发送消息,或在控制台上打印消息,则需要执行此操作。 Generator类的工作是采用消息对象结构并生成纯文本文档。

同样,与email.parser模块一样,您不仅限于 Binding 生成器的Function;您可以自己从头开始写一个。但是,Binding 的生成器知道如何以符合标准的方式生成大多数电子邮件,应该能够很好地处理 MIME 和非 MIME 电子邮件,并且其设计目的是使从纯文本passParser类转换为消息结构,以及返回纯文本,是幂等的(Importing 与输出相同)[1]。另一方面,在程序构造的Message上使用生成器可能会导致Message对象发生更改,因为默认值已填写。

以下是从email.generator模块导入的Generator类的公共方法:

可选的* mangle_from_ *是一个标志,当True时,会将>字符放在正文中以From开头的任何行的前面,即From,然后在行的开头加一个空格。这是唯一避免这种行被误认为 Unix 邮箱格式信封头分隔符的可移植方式(有关详细信息,请参见为什么内容长度格式不正确)。 * mangle_from_ *默认为True,但是如果您不编写 Unix 邮箱格式文件,则可能希望将其设置为False

可选* maxheaderlen 指定非连续 Headers 的最长长度。当标题行长于 maxheaderlen *(以字符为单位,制表符扩展为 8 个空格)时,标题将按照Header类中的定义进行拆分。设置为零以禁用 Headers 换行。 RFC 2822推荐(但不是必需),默认值为 78.

其他公共Generator方法是:

可选的* unixfrom *是一个标志,用于强制在根消息对象的第一个 RFC 2822Headers 之前打印信封 Headers 定界符。如果根对象没有信封头,则会制作一个标准的信封头。默认情况下,将其设置为False以禁止打印信封定界符。

请注意,对于子部件,不会打印任何信封标题。

版本 2.2.2 中的新Function。

版本 2.2.2 中的新Function。

为方便起见,请参见方法Message.as_string()str(aMessage),也称为Message.__str__(),它们简化了消息对象的格式化字符串表示形式的生成。有关更多详细信息,请参见email.message

email.generator模块还提供了一个称为DecodedGenerator的派生类,该类类似于GeneratorBase Class,只是非* text *部分用表示该部分的格式字符串代替。

如果子部分不是主要类型* text ,则可选 fmt *是用于代替消息有效负载的格式字符串。 * fmt *使用以下%(keyword)s1 格式的关键字扩展:

[Non-text (%(type)s) part of message omitted, filename %(filename)s]

版本 2.2.2 中的新Function。

在版本 2.5 中进行了更改:先前弃用的方法call()已删除。

Footnotes

首页