首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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感知子类的便利基类提供。

_maintypeContent-Type主要类型(例如文本图像),_subtypeContent-Type次要类型(例如plaingif)。_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标头charsetContent-Transfer-Endcoding标头。这意味着set_payload即使在set_payload命令中传递了字符集,后续调用也不会导致编码的有效内容。您可以通过删除Content-Transfer-Encoding标题来“重置”此行为,之后一个set_payload调用将自动编码新的有效内容(并添加一个新的Content-Transfer-Encoding标头)。

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com