19.1.7. email.mime
:从头开始创建电子邮件和MIME对象¶
源代码: Lib / email / mime /
通常,您通过将文件或某些文本传递到解析器来获取消息对象结构,解析器将解析文本并返回根消息对象。但是,您也可以从头开始构建完整的消息结构,或者手动构建单个Message
对象。事实上,您也可以使用现有结构并添加新的Message
对象,移动它们等。这使得一个非常方便的接口切片和切片MIME消息。
您可以通过创建Message
实例,手动添加附件和所有适当的标题来创建新的对象结构。对于MIME邮件,email
包提供了一些方便的子类,使事情更容易。
这里是类:
- class
email.mime.base.
MIMEBase
(_maintype, _subtype, **_params)¶ 模块:
email.mime.base
这是
Message
的所有MIME特定子类的基类。通常,您不会创建特定于MIMEBase
的实例,尽管可以。MIMEBase
主要提供为更具体的MIME感知子类的方便基类。_maintype是内容类型主类型(例如文本或图像),_subtype是内容类型plain或gif)。_params是参数键/值字典,并直接传递到
Message.add_header
。MIMEBase
类始终添加Content-Type标头(基于_maintype,_subtype和_params )和MIME-Version标头(始终设置为1.0
)。
- 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, **_params)¶ 模块:
email.mime.multipart
MIMEBase
的子类,这是multipart的MIME邮件的中间基类。可选_subtype默认为mixed,但可用于指定邮件的子类型。multipart / _subtype的Content-Type头将添加到消息对象。还将添加MIME-Version头。可选boundary是多部分边界字符串。当
None
(默认值)时,在需要时计算边界(例如,当消息被序列化时)。_subparts是有效负载的初始子部件的序列。必须可以将此序列转换为列表。您始终可以使用
Message.attach
方法将新的子部件附加到消息。Content-Type标头的附加参数取自关键字参数,或传递到作为关键词字典的_params参数中。
- class
email.mime.application.
MIMEApplication
(_data, _subtype='octet-stream', _encoder=email.encoders.encode_base64, **_params)¶ 模块:
email.mime.application
MIMENonMultipart
的子类,MIMEApplication
类用于表示主要类型应用程序的MIME消息对象。_data是包含原始字节数据的字符串。可选_subtype指定MIME子类型,默认为octet-stream。可选的_encoder是可调用(即,函数),其将执行用于传输的数据的实际编码。此可调用需要一个参数,即
MIMEApplication
实例。它应该使用get_payload()
和set_payload()
将有效负载更改为编码形式。它还应根据需要向消息对象添加任何Content-Transfer-Encoding或其他标头。默认编码为base64。有关内建编码器的列表,请参见email.encoders
模块。_params直接传递给基类构造函数。
- class
email.mime.audio.
MIMEAudio
(_audiodata, _subtype=None, _encoder=email.encoders.encode_base64, **_params)¶ 模块:
email.mime.audio
MIMENonMultipart
的子类,MIMEAudio
类用于创建主要类型音频的MIME消息对象。_audiodata是包含原始音频数据的字符串。如果此数据可以由标准Python模块sndhdr
解码,则子类型将自动包含在Content-Type头中。否则,您可以通过_subtype参数显式指定音频子类型。如果未能猜出次要类型并且未给出_subtype,则会引发TypeError
。可选的_encoder是可调用(即,函数),其将执行用于传输的音频数据的实际编码。这个callable有一个参数,它是
MIMEAudio
实例。它应该使用get_payload()
和set_payload()
将有效负载更改为编码形式。它还应根据需要向消息对象添加任何Content-Transfer-Encoding或其他标头。默认编码为base64。有关内建编码器的列表,请参见email.encoders
模块。_params直接传递给基类构造函数。
- class
email.mime.image.
MIMEImage
(_imagedata, _subtype=None, _encoder=email.encoders.encode_base64, **_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
模块。_params直接传递到
MIMEBase
构造函数。
- class
email.mime.message.
MIMEMessage
(_msg, _subtype='rfc822')¶ 模块:
email.mime.message
MIMENonMultipart
的子类,MIMEMessage
类用于创建主类型消息的MIME对象。_msg用作有效负载,并且必须是类Message
(或其子类)的实例,否则引发TypeError
。可选_subtype设置消息的子类型;它默认为rfc822。
- class
email.mime.text.
MIMEText
(_text, _subtype='plain', _charset=None)¶ 模块:
email.mime.text
MIMENonMultipart
的子类,MIMEText
类用于创建主要类型文本的MIME对象。_text是有效负载的字符串。_subtype是次要类型,默认为plain。_charset是文本的字符集,并作为参数传递到MIMENonMultipart
构造函数;如果字符串只包含ascii
代码点,而utf-8
则默认为us-ascii
。_charset参数接受字符串或Charset
实例。Unless the _charset argument is explicitly set to
None
, the MIMEText object created will have both a Content-Type header with acharset
parameter, and a Content-Transfer-Endcoding header. 这意味着,即使在set_payload
命令中传递了字符集,后续的set_payload
调用也不会产生编码的有效内容。您可以通过删除Content-Transfer-Encoding
头来“重置”此行为,之后set_payload
调用将自动编码新的有效内容(并添加新的Content-Transfer-Encoding header)。在3.5版本中更改: _charset也接受
Charset
实例。