Skip to main content

19.1.13. email.encoders:编码器

源代码: Lib/email/encoders.py


此模块是旧版(Compat32)电子邮件API的一部分。在新API中,功能由 set_content() 方法的 cte 参数提供。

本节中的其余文本是模块的原始文档。

从头开始创建 Message 对象时,您通常需要对有效内容进行编码,以便通过兼容的邮件服务器进行传输。这对于包含二进制数据的 image/*text/* 类型消息尤其如此。

email 包在其 encoders 模块中提供了一些方便的编码。这些编码器实际上由 MIMEAudioMIMEImage 类构造函数使用以提供默认编码。所有编码器函数只需要一个参数,即要编码的消息对象。它们通常提取有效载荷,对其进行编码,并将有效载荷重置为这个新编码的值。他们还应该设置 Content-Transfer-Encoding 头适当。

请注意,这些函数对多部分消息无意义。它们必须应用于单个子部分,并且如果传递了类型为multipart的消息,则将引发 TypeError

这里提供的编码功能:

email.encoders.encode_quopri(msg)

将有效负载编码为可引用的打印格式,并将 Content-Transfer-Encoding 标头设置为 quoted-printable [1]。当大多数有效内容是正常的可打印数据,但包含几个不可打印的字符时,这是一个很好的编码。

email.encoders.encode_base64(msg)

将有效负载编码为base64格式,并将 Content-Transfer-Encoding 标头设置为 base64。这是一个很好的编码,当大多数有效负载是不可打印的数据时使用,因为它比引用可打印的更紧凑的形式。 base64编码的缺点是它使文本非人类可读。

email.encoders.encode_7or8bit(msg)

这实际上不修改消息的有效负载,但它根据有效载荷数据将 Content-Transfer-Encoding 头适当地设置为 7bit8bit

email.encoders.encode_noop(msg)

这没什么;它甚至不设置 Content-Transfer-Encoding 头。

脚注

[1]

请注意,使用 encode_quopri() 编码还会对数据中的所有选项卡和空格字符进行编码。