On this page
18.1.7. email.encoders:编码器
从头开始创建Message对象时,通常需要对有效负载进行编码,以pass兼容的邮件服务器进行传输。对于包含二进制数据的* image/ 和 text/* 类型的消息尤其如此。
email包在其encoders
模块中提供了一些方便的编码。 MIMEAudio和MIMEImage类的构造函数实际上使用这些编码器来提供默认编码。所有编码器函数都只接受一个参数,即要编码的消息对象。他们通常提取有效负载,对其进行编码,然后将有效负载重置为该新编码的值。他们还应适当设置* Content-Transfer-Encoding *Headers。
请注意,这些Function对于 Multipart 消息没有意义。必须将它们应用于各个子部分,如果传递的消息类型为 Multipart,则将引发TypeError。
以下是提供的编码Function:
email.encoders.
encode_quopri
(* msg *)- 将有效负载编码为带引号的可打印形式,并将* Content-Transfer-Encoding *Headers 设置为
quoted-printable
[1]。当您的大部分有效负载是正常的可打印数据但包含一些不可打印的字符时,这是一种很好的 encodings。
- 将有效负载编码为带引号的可打印形式,并将* Content-Transfer-Encoding *Headers 设置为
email.encoders.
encode_base64
(* msg *)- 将有效负载编码为 base64 形式,并将* Content-Transfer-Encoding *Headers 设置为
base64
。当大多数有效负载是不可打印的数据时,这是一种很好的 encodings,因为它是比 quoted-printable 更紧凑的形式。 base64 编码的缺点是它使文本变得不可读。
- 将有效负载编码为 base64 形式,并将* Content-Transfer-Encoding *Headers 设置为
email.encoders.
encode_7or8bit
(* msg *)- 这实际上并没有修改邮件的有效负载,但是会根据有效负载数据将* Content-Transfer-Encoding *Headers 设置为
7bit
或8bit
。
- 这实际上并没有修改邮件的有效负载,但是会根据有效负载数据将* Content-Transfer-Encoding *Headers 设置为
email.encoders.
encode_noop
(* msg *)- 这什么也没做;它甚至没有设置* Content-Transfer-Encoding *Headers。
Footnotes
- [1]
- 请注意,使用encode_quopri()编码还会对数据中的所有制表符和空格字符进行编码。