email.encoders: 编码器

源代码: Lib/email/encoders.py


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

此模块在 Python 3 中已弃用。此处提供的函数不应显式调用,因为 MIMEText 类使用在该类实例化期间传递的 _subtype_charset 值设置内容类型和 CTE 标头。

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

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

email 包在其 encoders 模块中提供了一些方便的编码器。这些编码器实际上被 MIMEAudioMIMEImage 类构造函数用于提供默认编码。所有编码器函数都接受一个参数,即要编码的消息对象。它们通常会提取有效负载,对其进行编码,并将有效负载重置为新编码的值。它们还应根据需要设置 Content-Transfer-Encoding 标头。

请注意,这些函数对于多部分消息没有意义。它们必须应用于各个子部分,并且如果传递的消息类型是多部分消息,则会引发 TypeError

以下是提供的编码函数

email.encoders.encode_quopri(msg)

将有效负载编码为 quoted-printable 格式,并将 Content-Transfer-Encoding 标头设置为 quoted-printable [1]。当您的大部分有效负载是正常的打印数据,但包含一些不可打印的字符时,这是一种很好的编码方式。

email.encoders.encode_base64(msg)

将有效负载编码为 base64 格式,并将 Content-Transfer-Encoding 标头设置为 base64。当您的大部分有效负载是不可打印的数据时,这是一种很好的编码方式,因为它比 quoted-printable 更紧凑。base64 编码的缺点是它使文本不可人工读取。

email.encoders.encode_7or8bit(msg)

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

email.encoders.encode_noop(msg)

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

脚注