email.encoders: Encoders

源代码: Lib/email/encoders.py


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

此模块在 Python 3 中已弃用。此处提供的函数不应显式调用,因为MIMEText类使用在实例化该类的过程中传递的* _subtype _charset *值来设置 Content Type 和 CTEHeaders。

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

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

email软件包的encoders模块中提供了一些方便的编码器。 MIMEAudioMIMEImage类的构造函数实际上使用这些编码器来提供默认编码。所有编码器函数都只接受一个参数,即要编码的消息对象。他们通常提取有效负载,对其进行编码,然后将有效负载重置为该新编码的值。他们还应适当设置* Content-Transfer-Encoding *Headers。

请注意,这些Function对于 Multipart 消息没有意义。必须将它们应用于各个子部分,如果传递的消息类型为 Multipart,则将引发TypeError

以下是提供的编码Function:

  • email.encoders. encode_quopri(* msg *)

    • 将有效负载编码为带引号的可打印形式,并将* Content-Transfer-Encoding *Headers 设置为quoted-printable [1]。当您的大部分有效负载是正常的可打印数据但包含一些不可打印的字符时,这是一种很好的 encodings。
  • email.encoders. encode_base64(* msg *)

    • 将有效负载编码为 base64 形式,并将* Content-Transfer-Encoding *Headers 设置为base64。当大多数有效负载是不可打印的数据时,这是一种很好的 encodings,因为它是比 quoted-printable 更紧凑的形式。 base64 编码的缺点是它使文本变得不可读。
  • email.encoders. encode_7or8bit(* msg *)

    • 这实际上并没有修改邮件的有效负载,但是会根据有效负载数据将* Content-Transfer-Encoding *Headers 设置为7bit8bit
  • email.encoders. encode_noop(* msg *)

    • 这什么也没做;它甚至没有设置* Content-Transfer-Encoding *Headers。

Footnotes

  • [1]
    • 请注意,使用encode_quopri()编码还会对数据中的所有制表符和空格字符进行编码。