email.mime: Creating email and MIME objects from scratch
email.mime: Creating email and MIME objects from scratch
通常,通过将文件或某些文本传递给解析器来获取消息对象结构,解析器解析文本并返回根消息对象。但是,您也可以从头开始构建完整的消息结构,或者Message
手动构建单个对象。实际上,您也可以使用现有的结构并添加新Message
对象,将它们移动等。这为切割和切割MIME消息提供了一个非常方便的界面。
您可以通过创建Message
实例,手动添加附件和所有适当的标题来创建新的对象结构。尽管如此,该email
包提供了一些方便的子类来使事情变得更简单。
这里是类:
class email.mime.base.MIMEBase(_maintype, _subtype, **_params)
模块: email.mime.base
这是所有MIME特定子类的基类Message
。通常你不会创建特定的实例MIMEBase
,尽管你可以。MIMEBase
主要作为更具体的MIME感知子类的便利基类提供。
_maintype
是Content-Type
主要类型(例如文本
或图像
),_subtype
是Content-Type
次要类型(例如plain
或gif
)。_params
是一个参数键/值字典,并直接传递给Message.add_header
。
该MIMEBase
班总是增加了一个内容类型
头(基于_maintype
,_subtype
和_params
)和MIME-版本
头(始终设置为1.0
)。
class email.mime.nonmultipart.MIMENonMultipart
Module: email.mime.nonmultipart
它的一个子MIMEBase
类,是不是多部分的
MIME消息的中间基类。这个类的主要目的是防止使用attach()
只对多部分
消息有意义的方法。如果attach()
被调用,MultipartConversionError
则会引发异常。
2.2.2版中的新功能。
class email.mime.multipart.MIMEMultipart([_subtype[, boundary[, _subparts[, _params]]]])
模块: email.mime.multipart
它的一个子MIMEBase
类是多部分
MIME消息的中间基类。可选_subtype
默认为混合
,但可用于指定消息的子类型。甲内容类型
的报头的multipart / _subtype
将被添加到该消息对象。一个MIME-版
头也将增加。
可选边界
是多部分边界
字符串。当None
(缺省值)时,边界
在需要时计算(例如,当消息被序列化时)。
_subparts
是有效负载的一系列初始子部分。必须可以将此序列转换为列表。您始终可以使用该Message.attach
方法将新的子部件附加到消息中。
Content-Type
头部的其他参数取自关键字参数,或传递到_params
参数(它是一个关键字字典)。
2.2.2版中的新功能。
class email.mime.application.MIMEApplication(_data[, _subtype[, _encoder[, **_params]]])
模块: email.mime.application
的一个子类MIMENonMultipart
中,MIMEApplication
类被用来表示主要类型的MIME消息对象应用
。_data
是一个包含原始字节数据的字符串。可选_subtype
指定MIME子类型,并默认为八位字节流
。
可选的_encoder
是一个可调用的函数(即函数),它将执行传输数据的实际编码。这个可调用的参数有一个参数,这就是MIMEApplication
实例。它应该使用get_payload()
并将set_payload()
有效载荷更改为编码形式。它还应该根据需要将任何Content-Transfer-Encoding
或其他标题添加到消息对象。默认编码是base64。查看email.encoders
模块以获取内置编码器的列表。
_params
直接传递给基类构造函数。
2.5版本中的新功能。
class email.mime.audio.MIMEAudio(_audiodata[, _subtype[, _encoder[, **_params]]])
模块: email.mime.audio
一个子类MIMENonMultipart
中,MIMEAudio
类用于创建主要类型的MIME消息对象的音频
。_audiodata
是一个包含原始音频数据的字符串。如果这个数据可以被标准Python模块解码sndhdr
,那么子类型将自动包含在Content-Type
头中。否则,您可以通过_subtype
参数显式指定音频子类型。如果无法猜测次要类型,并且未提供_subtype
,则会TypeError
提出。
可选的_encoder
是一个可调用的函数(即函数),它将执行用于传输的音频数据的实际编码。这个可调用的参数有一个参数,这就是MIMEAudio
实例。它应该使用get_payload()
并将set_payload()
有效载荷更改为编码形式。它还应该根据需要将任何Content-Transfer-Encoding
或其他标题添加到消息对象。默认编码是base64。查看email.encoders
模块以获取内置编码器的列表。
_params
直接传递给基类构造函数。
class email.mime.image.MIMEImage(_imagedata[, _subtype[, _encoder[, **_params]]])
模块: email.mime.image
的一个子类MIMENonMultipart
中,MIMEImage
类用于创建主要类型的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])
模块: email.mime.message
的一个子类MIMENonMultipart
中,MIMEMessage
类用于创建主要类型的MIME对象消息
。_msg
用作有效负载,并且必须是类Message
(或其子类)的实例,否则TypeError
会引发a。
可选_subtype
设置消息的子类型; 它默认为rfc822
。
class email.mime.text.MIMEText(_text[, _subtype[, _charset]])
模块: email.mime.text
的一个子类MIMENonMultipart
中,MIMEText
类用于创建主要类型的MIME对象文本
。_text
是有效负载的字符串。_subtype
是次要类型,默认为plain
。_charset
是文本
的字符集,并作为参数传递给MIMENonMultipart
构造函数; 它默认为us-ascii
。如果_text
是unicode,它是使用编码output_charset
的_CHARSET
,否则它被原样使用。
在版本2.4中更改:先前弃用的_encoding
参数已被删除。内容传输编码现在基于_charset
参数隐式发生。
除非_charset
参数明确设置为None
,否则创建的MIMEText对象将同时具有带参数的Content-Type
标头charset
和Content-Transfer-Endcoding
标头。这意味着set_payload
即使在set_payload
命令中传递了字符集,后续调用也不会导致编码的有效内容。您可以通过删除Content-Transfer-Encoding
标题来“重置”此行为,之后一个set_payload
调用将自动编码新的有效内容(并添加一个新的Content-Transfer-Encoding
标头)。