email.mime:从头开始创建电子邮件和 MIME 对象 — Python 文档

来自菜鸟教程
Python/docs/3.7/library/email.mime
跳转至:导航、​搜索

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

源代码: :source:`Lib/email/mime/`



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

通常,您通过将文件或一些文本传递给解析器来获取消息对象结构,解析器解析文本并返回根消息对象。 但是,您也可以从头开始构建完整的消息结构,甚至可以手动构建单个 Message 对象。 事实上,您还可以采用现有结构并添加新的 Message 对象,移动它们等。 这为切片和切块 MIME 消息提供了一个非常方便的界面。

您可以通过创建 Message 实例、手动添加附件和所有适当的标题来创建新的对象结构。 但是对于 MIME 消息,email 包提供了一些方便的子类,使事情变得更容易。

以下是课程:

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

模块:email.mime.base

这是 Message 的所有 MIME 特定子类的基类。 通常,您不会专门创建 MIMEBase 的实例,尽管您可以。 MIMEBase 主要是作为更具体的 MIME-aware 子类的方便基类提供的。

_maintypeContent-Type 主要类型(例如 textimage),而 _subtypeContent-Type 次要类型(例如 普通gif)。 _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 的 MIME 消息的中间基类。 此类的主要目的是防止使用 attach() 方法,该方法仅对 multipart 消息有意义。 如果调用 attach(),则会引发 MultipartConversionError 异常。

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

模块:email.mime.multipart

MIMEBase 的子类,这是 multipart 的 MIME 消息的中间基类。 可选 _subtype 默认为 mixed,但可用于指定消息的子类型。 multipart/_subtypeContent-Type 标头将被添加到消息对象中。 还将添加 MIME-Version 标头。

可选的 boundary 是多部分边界字符串。 当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 的子类 MIMEApplication 类用于表示主要类型 application 的 MIME 消息对象。 _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 的子类 MIMEAudio 类用于创建主要类型 audio 的 MIME 消息对象。 _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 的子类 MIMEImage 类用于创建主要类型 image 的 MIME 消息对象。 _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 的子类 MIMEMessage 类用于创建主类型 message 的 MIME 对象。 _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 的子类 MIMEText 类用于创建主要类型 text 的 MIME 对象。 _text 是有效载荷的字符串。 _subtype 是次要类型,默认为 plain_charset 是文本的字符集,作为参数传递给 MIMENonMultipart 构造函数; 如果字符串仅包含 ascii 代码点,则默认为 us-ascii,否则为 utf-8_charset 参数接受字符串或 Charset 实例。

除非 _charset 参数显式设置为 None,否则创建的 MIMEText 对象将具有 Content-Type 标头和 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 仅关键字参数。