:从头开始创建电子邮件和MIME对象 – 电子邮件和MIME处理包(Python教程)(参考资料)
email.mime:从头开始创建电子邮件和MIME对象
/这个模块是遗产的一部分(Compat32)电子邮件API。它的功能部分被contentmanager在新的API中,但在某些应用程序中,这些类可能仍然有用,即使在非标准代码中也是如此.
通常,通过将文件或一些文本传递给解析器来获取消息对象结构,该解析器解析文本并返回根消息对象。你怎么也可以从头开始建立一个完整的消息结构,甚至个人Message手工制作的物品。实际上,你也可以采用一个现有的结构并添加新的Message对象,移动地面等。这为切片和切割MIMEmessages提供了一个非常方便的界面.
您可以通过创建Message实例,手动添加附件和所有适当的标头来创建新的对象结构。但对于MIMEmessages,emailpackage提供了一些方便的子类来简化事情.
这是类:
- class
email.mime.base.MIMEBase(_maintype, _subtype, *, policy=compat32, **_params) -
模块:
email.mime.base这是
Message。通常情况下你不会创建MIMEBase的实例,尽管你可以。MIMEBase主要是为更具体的MIME感知子类提供方便的基类._maintype是Content-Type主要类型(例如text或image)和_subtype是Content-Type minortype(例如plain或gif)。_params是一个parameterkey / value字典,直接传递给
Message.add_header.如果policy指定,(默认为
compat32策略)它将传递给Message.MIMEBase类总是添加一个Content-Type标题(基于_maintype, _subtype,和_params),和MIME-Version标题(总是设置为1.0).在版本3.6中更改:添加policy keyword-only参数.
- class
email.mime.nonmultipart.MIMENonMultipart -
模块:
email.mime.nonmultipartMIMEBase的子类,这是一个MIME消息的中间基类,不是multipart。这个类的主要用途是防止使用attach()方法,这只对multipart消息有意义。如果调用attach(),则会引发MultipartConversionError异常.
- class
email.mime.multipart.MIMEMultipart(_subtype=”mixed”, boundary=None, _subparts=None, *, policy=compat32, **_params) -
模块:
email.mime.multipart的子类
MIMEBase,这是MIME消息的中间基类multipart。可选的 _subtype默认为mixed,但可用于指定themessage的子类型。一个 Content-Type的标题multipart/_subtype将被添加到消息对象中。一个 MIME-Version标题willalso被添加.可选的 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.applicationMIMENonMultipart的子类,MIMEApplication类用于表示主要类型的MIME消息对象application. _data是包含rawbyte数据的字符串。可选_subtype指定MIME子类型,默认为octet-stream.可选_encoder是可调用的(即函数),它将执行数据的执行编码以便传输。这个callable接受一个参数,即
MIMEApplication实例。它应该使用get_payload()和set_payload()将有效负载更改为encodedform。它还应该根据需要添加Content-Transfer-Encoding或其他标题到messageobject。默认编码为base64。见email.encoders用于内置编码器列表的模块.可选policy参数默认为
compat32._params直接传递给基类构造函数.
更改在版本3.6:添加了policykey-only parameter.
- class
email.mime.audio.MIMEAudio(_audiodata, _subtype=None, _encoder=email.encoders.encode_base64, *, policy=compat32, **_params) -
Module:
email.mime.audioMIMENonMultipart的子类,MIMEAudioclass用于创建主要类型的MIME消息对象audio. _audiodata是包含原始音频数据的字符串。如果这个数据可以被标准的Python模块sndhdr解码,那么子类将自动包含在Content-Type标题中。否则你可以通过_subtype参数显式指定音频子类型。如果没有猜到次要类型而没有给出_subtype,那么TypeError就会被提起可选_encoder是一个可调用的(即函数)将执行音频数据的执行编码以便传输。这个callable接受一个参数,即
MIMEAudio实例。应该使用get_payload()和set_payload()将有效负载更改为encodedform。它还应该根据需要添加Content-Transfer-Encoding或其他标题到messageobject。默认编码为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.imageMIMENonMultipart,MIMEImage类用于创建主要类型的MIME消息对象image. _imagedata是包含原始图像数据的字符串。如果这个数据可以通过标准的Python模块imghdr解码,那么子类将自动包含在Content-Type标题中。否则你可以通过_subtype参数显式指定图像子类型。如果没有猜到次要类型而没有给出_subtype,那么TypeError就会被提起可选_encoder是一个可调用的(即函数)将执行图像数据的执行编码以便传输。这个callable接受一个参数,即
MIMEImage实例。应该使用get_payload()和set_payload()将有效负载更改为encodedform。它还应该根据需要添加Content-Transfer-Encoding或其他标题到messageobject。默认编码为base64。请参阅email.encoders模块以获取内置编码器列表.可选policy参数默认为
compat32._params直接传递给
MIMEBaseconstructor.更改版本3.6:添加了policykey-only parameter.
- class
email.mime.message.MIMEMessage(_msg, _subtype=”rfc822″, *, policy=compat32) -
Module:
email.mime.messageMIMENonMultipart的子类,MIMEMessageclass用于创建主类型的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.textMIMENonMultipart的子类,MIMEText类用于创建MIME对象主要类型text. _text是有效载荷的字符串。_subtype是minor类型,默认为plain. _charset是文本的字符集,并作为参数传递给MIMENonMultipart构造函数;如果字符串仅包含us-ascii代码点,则默认为ascii,否则为utf-8。_charset参数接受字符串或Charsetinstance.除非_charset参数明确设置为
None,否则为mIMEText对象创造将有一个Content-Typeheaderwithcharset参数和Content-Transfer-Encoding标题。这意味着即使在set_payload命令中传递了一个字符集,随后的set_payload调用也不会产生编码的有效负载。您可以通过删除Content-Transfer-Encoding标题来“重置”此行为,之后set_payloadcallwill会自动编码新的有效负载(并添加一个新的Content-Transfer-Encoding标题).可选policy参数默认为
compat32.在版本3.5中更改:_charset也接受
Charsetinstances.在版本3.6中更改:添加policy关键字参数.
评论被关闭。