email.contentmanager:ManagementMIME 内容

源代码: Lib/email/contentmanager.py


3.6 版的新Function:[1]

要查找处理程序,请在注册表中查找以下项,并从找到的第一个项开始停止:

Note

  • 表示完整 MIME 类型(maintype/subtype)的字符串

  • 代表maintype的字符串

  • 空字符串

如果这些键都不产生处理程序,请为完整的 MIME 类型引发KeyError

要查找处理程序,请获取* obj *(typ = type(obj))的类型,并在注册表中查找以下项,并从找到的第一个项开始停止:

Note

  • 类型本身(typ)

  • 类型的全限定名(typ.__module__ + '.' + typ.__qualname__)。

  • 类型的质量名称(typ.__qualname__)

  • 类型的名称(typ.__name__)。

如果以上都不匹配,请对MRO(typ.__mro__)中的每种类型重复上述所有检查。最后,如果没有其他键产生处理程序,请检查None的处理程序。如果没有用于None的处理程序,请为该类型的标准名称引发KeyError

如果不存在,还添加一个* MIME-Version *Headers(另请参见MIMEPart)。

Content Manager 实例

目前,电子邮件包仅提供一个具体的内容 Management 器raw_data_manager,尽管将来可能会添加更多。 raw_data_managerEmailPolicy及其派生词提供的content_manager

添加带有maintype/subtype值的* Content-Type *Headers。

Note

  • 对于str,将 MIME maintype设置为text,如果未指定,则将子类型设置为* subtype *,否则将其设置为plain

  • 对于bytes,请使用指定的* maintype subtype *,如果未指定,则引发TypeError

  • 对于EmailMessage对象,将 maintype 设置为message,如果指定了子类型,则将子类型设置为* subtype ;如果未指定,则将子类型设置为rfc822。如果 subtype *是partial,则引发错误(必须使用bytes对象来构造message/partialComponent)。

如果提供了* charset (仅对str有效),则使用指定的字符集将字符串编码为字节。默认值为utf-8。如果指定的 charset *是标准 MIME 字符集名称的已知别名,请改用标准字符集。

如果设置了* cte ,则使用指定的内容传输编码对有效负载进行编码,然后将 Content-Transfer-Encoding *Headers 设置为该值。 * cte 的可能值为quoted-printablebase647bit8bitbinary。如果 Importing 不能以指定的编码进行编码(例如,为包含非 ASCII 值的 Importing 指定7bit cte *),请提高ValueError

Note

  • 对于str个对象,如果未设置* cte *,请使用试探法确定最紧凑的编码。

  • 对于EmailMessage,每个 RFC 2046,如果* subtype * rfc822的* cte quoted-printablebase64 cte ,以及 subtype * external-body7bit以外的任何* cte 的请求,则引发错误。对于message/rfc822,如果未指定 cte ,则使用8bit。对于 subtype *的所有其他值,请使用7bit

Note

  • cte *为binary尚无法正常工作。由set_content修改的EmailMessage对象是正确的,但是BytesGenerator没有正确序列化它。

如果设置了* disposition ,请将其用作 Content-Disposition Headers 的值。如果未指定,并且指定了 filename ,则添加具有值attachment的标题。如果未指定 disposition 并且也未指定 filename *,则不要添加标题。 * disposition *的唯一有效值为attachmentinline

如果指定了* filename ,请将其用作 Content-Disposition *Headers 的filename参数的值。

如果指定了* cid ,请添加 Content-ID Headers,并将 cid *作为其值。

如果指定了* params ,则迭代其items方法并使用生成的(key, value)对在 Content-Type *头上设置其他参数。

如果指定了* headers ,并且是形式为headername: headervalue的字符串列表或header对象的列表(pass具有name属性与字符串区别),则将标题添加到 msg *。

Footnotes

首页