email.encoders
: 编码器¶
此模块是旧式 (Compat32
)电子邮件 API 的一部分。 在新式 API 中,此功能由 set_content()
方法的 cte 形参提供。
此模块在 Python 3 中已弃用。此处提供的函数不应被显式调用,因为 MIMEText
类会使用在该类实例化期间传入的 _subtype 和 _charset 值来设置内容类型和 CTE 标头。
本节的其余文本是该模块的原始文档。
当从头开始创建 Message
对象时,您经常需要对载荷(payloads)进行编码,以便通过兼容的邮件服务器进行传输。 对于包含二进制数据的 image/* 和 text/* 类型的消息尤其如此。
email
包在其 encoders
模块中提供了一些方便的编码器。 这些编码器实际上被 MIMEAudio
和 MIMEImage
类的构造函数用来提供默认编码。 所有编码器函数都只接受一个参数,即要编码的消息对象。 它们通常会提取载荷,对其进行编码,然后将载荷重置为这个新编码的值。 它们还应该适当地设置 Content-Transfer-Encoding 标头。
请注意,这些函数对于多部分(multipart)消息没有意义。 它们必须应用于单个子部分,如果传递的消息类型是 multipart,则会引发 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 标头适当地设置为
7bit
或8bit
。
- email.encoders.encode_noop(msg)¶
这什么都不做;它甚至不会设置 Content-Transfer-Encoding 标头。
脚注