email.mime :从头创建电子邮件和MIME对象

源代码: Lib/email/mime/


此模块是传统模块的一部分 (Compat32 )电子邮件API。其功能部分由 contentmanager 在新的API中,但在某些应用程序中,这些类可能仍然有用,即使在非遗留代码中也是如此。

通常,通过将文件或某些文本传递给解析器来获得消息对象结构,解析器解析文本并返回根消息对象。但是,您也可以从头构建一个完整的消息结构,甚至是单个消息结构 Message 手工物品。实际上,您还可以采用现有结构并添加新的 Message 对象,移动它们,等等。这使得分割和切割mime消息的界面非常方便。

可以通过创建 Message 实例,手动添加附件和所有适当的头。但是,对于mime消息, email 包提供了一些方便的子类,使事情变得容易。

课程如下:

class email.mime.base.MIMEBase(_maintype, _subtype, *, policy=compat32, **_params)

模块: email.mime.base

这是所有特定于mime的子类的基类 Message . 通常,您不会专门创建 MIMEBase 尽管你可以。 MIMEBase 主要作为更具体的支持mime的子类的一个方便的基类提供。

_maintypeContent-Type 主要类型(例如 textimage_subtypeContent-Type 次要类型(例如 plaingif_params 是参数键/值字典,并直接传递给 Message.add_header .

如果 policy 已指定,(默认为 compat32 策略)它将传递给 Message .

这个 MIMEBase 类始终添加 Content-Type 标题(基于 _maintype_subtype_params )和 MIME-Version 标题(始终设置为 1.0

在 3.6 版更改: 补充 policy 仅关键字参数。

class email.mime.nonmultipart.MIMENonMultipart

模块: email.mime.nonmultipart

一个子类 MIMEBase ,这是一个中间基类,用于 multipart . 此类的主要目的是防止使用 attach() 方法,只对 multipart 信息。如果 attach() 被称为 MultipartConversionError 引发异常。

class email.mime.multipart.MIMEMultipart(_subtype='mixed', boundary=None, _subparts=None, *, policy=compat32, **_params)

模块: email.mime.multipart

一个子类 MIMEBase ,这是用于 multipart . 可选的 _subtype 默认为 mixed ,但可以用于指定消息的子类型。一 Content-Type 标题 multipart/_subtype 将添加到消息对象。一 MIME-Version 还将添加标题。

可选的 边界 是多部分边界字符串。什么时候? None (默认值),根据需要计算边界(例如,当消息序列化时)。

_subparts 是有效载荷的初始子部件序列。必须可以将此序列转换为列表。您可以使用 Message.attach 方法。

可选的 policy 参数默认为 compat32 .

的附加参数 Content-Type 头从关键字参数中获取,或传递到 _params 参数,它是关键字字典。

在 3.6 版更改: 补充 policy 仅关键字参数。

class email.mime.application.MIMEApplication(_data, _subtype='octet-stream', _encoder=email.encoders.encode_base64, *, policy=compat32, **_params)

模块: email.mime.application

一个子类 MIMENonMultipart , the MIMEApplication 类用于表示主要类型的mime消息对象 application . _data 是包含原始字节数据的字符串。可选的 _subtype 指定mime子类型并默认为 octet-stream .

可选的 _encoder 是一个可调用的(即函数),它将执行传输数据的实际编码。此可调用项采用一个参数,即 MIMEApplication 实例。应该使用 get_payload()set_payload() 将有效负载更改为编码形式。它还应该添加 Content-Transfer-Encoding 或消息对象的其他头(如有必要)。默认编码是base64。见 email.encoders 用于内置编码器列表的模块。

可选的 policy 参数默认为 compat32 .

_params 直接传递给基类构造函数。

在 3.6 版更改: 补充 policy 仅关键字参数。

class email.mime.audio.MIMEAudio(_audiodata, _subtype=None, _encoder=email.encoders.encode_base64, *, policy=compat32, **_params)

模块: email.mime.audio

一个子类 MIMENonMultipart , the MIMEAudio 类用于创建主要类型的mime消息对象 audio . _audiodata 是包含原始音频数据的字符串。如果这个数据可以被标准的python模块解码 sndhdr ,则子类型将自动包含在 Content-Type 标题。否则,可以通过 _subtype 参数。如果无法猜测次要类型, _subtype 没有给,那么 TypeError 提高了。

可选的 _encoder 是一个可调用的(即函数),它将执行音频数据的实际编码以进行传输。此可调用项采用一个参数,即 MIMEAudio 实例。应该使用 get_payload()set_payload() 将有效负载更改为编码形式。它还应该添加 Content-Transfer-Encoding 或消息对象的其他头(如有必要)。默认编码是base64。见 email.encoders 用于内置编码器列表的模块。

可选的 policy 参数默认为 compat32 .

_params 直接传递给基类构造函数。

在 3.6 版更改: 补充 policy 仅关键字参数。

class email.mime.image.MIMEImage(_imagedata, _subtype=None, _encoder=email.encoders.encode_base64, *, policy=compat32, **_params)

模块: email.mime.image

一个子类 MIMENonMultipart , the MIMEImage 类用于创建主要类型的mime消息对象 image . _imagedata 是包含原始图像数据的字符串。如果这个数据可以被标准的python模块解码 imghdr ,则子类型将自动包含在 Content-Type 标题。否则,可以通过 _subtype 参数。如果无法猜测次要类型, _subtype 没有给,那么 TypeError 提高了。

可选的 _encoder 是一个可调用的(即函数),它将执行图像数据的实际编码以进行传输。此可调用项采用一个参数,即 MIMEImage 实例。应该使用 get_payload()set_payload() 将有效负载更改为编码形式。它还应该添加 Content-Transfer-Encoding 或消息对象的其他头(如有必要)。默认编码是base64。见 email.encoders 用于内置编码器列表的模块。

可选的 policy 参数默认为 compat32 .

_params 直接通过 MIMEBase 构造函数。

在 3.6 版更改: 补充 policy 仅关键字参数。

class email.mime.message.MIMEMessage(_msg, _subtype='rfc822', *, policy=compat32)

模块: email.mime.message

一个子类 MIMENonMultipart , the MIMEMessage 类用于创建主类型的mime对象 message . _msg 用作有效负载,并且必须是类的实例 Message (或其子类),否则 TypeError 提高了。

可选的 _subtype 设置消息的子类型;默认为 rfc822 .

可选的 policy 参数默认为 compat32 .

在 3.6 版更改: 补充 policy 仅关键字参数。

class email.mime.text.MIMEText(_text, _subtype='plain', _charset=None, *, policy=compat32)

模块: email.mime.text

一个子类 MIMENonMultipart , the MIMEText 类用于创建主要类型的mime对象 text . _text 是有效负载的字符串。 _subtype 是次要类型,默认为 plain . _charset 是文本的字符集,并作为参数传递给 MIMENonMultipart 构造函数;默认为 us-ascii 如果字符串只包含 ascii 代码点,以及 utf-8 否则。这个 _charset 参数接受字符串或 Charset 实例。

除非 _charset 参数显式设置为 None ,创建的mimetext对象将同时具有 Content-Type 头与A charset 参数,以及 Content-Transfer-Encoding 标题。这意味着 set_payload 即使在 set_payload 命令。您可以通过删除 Content-Transfer-Encoding 标题,之后是 set_payload 调用将自动对新的有效负载进行编码(并添加新的有效负载 Content-Transfer-Encoding 标题)。

可选的 policy 参数默认为 compat32 .

在 3.5 版更改: _charset 也接受 Charset 实例。

在 3.6 版更改: 补充 policy 仅关键字参数。