python email.message:比较电子邮件

在邮件包中的核心类是消息类,从email.message模块导入。它是为电子邮件对象模型的基类。消息提供的核心功能,用于设置和查询报头字段,以及用于访问消息体。
从概念上讲,一个Message对象包括头部和有效载荷。头是RFC2822风格的字段名称和值,其中的字段名称和值用冒号隔开。冒号不是任何字段名称或字段值的一部分。
头被存储在保留大小写的格式中返回,但匹配不区分大小写。还可以有一个单一的封壳标题,也被称为Unix的From头或From_头。有效载荷是一个字符串的简单的消息的情况下,物体或信息的列表对象的MIME文件容器(如多重/*和消息/ RFC822)。消息对象提供的映射风格的界面来访问邮件头,和一个显式接口来访问这两个头部和有效载荷。它提供了便利的方法来生成消息对象树的纯文本表示,访问常用的头参数,以及递归地走过对象树。
类email.message.Message构造函数没有参数。as_string([unixfrom])返回entire message flattened作为一个字符串整个邮件。当可选unixfrom为True,信封头被包含在返回的字符串研究。 unixfrom默认为false。flattening所述消息可以触发改变消息,如果默认需要在填充完成改造为字符串(例如,MIME边界可以生成或修改)。请注意,此方法提供便利,不得总是格式化消息你想要的方式。例如,默认情况下它begin with from。欲了解更多的灵活性,实例化一个生成器实例,并直接使用它flatten()方法。 例如:
from cStringIO import StringIO
from email.generator import Generator
fp = StringIO()
g = Generator(fp, mangle_from_=False, maxheaderlen=60)
g.flatten(msg)
text = fp.getvalue()


is_multipart()

返回true,如果该消息的有效载荷子消息的对象列表,否则返回False。当is_multipart()返回False,有效载荷应该是一个字符串对象。

str_()
相当于as_string(unixfrom= TRUE)。
set_unixfrom(unixfrom)

设置邮件的信封头unixfrom,这应该是一个字符串。

get_unixfrom()

返回邮件信封头。默认为无,如果信封头从来没有设置。

连接(负载)

给定负载添加到当前的有效负载,它必须是无或Message对象的调用之前的列表。通话结束后,有效载荷将总是消息的对象的列表。如果你想要设置的有效载荷为一个标量对象(如字符串),使用set_payload()来代替。

get_payload([I [,解码]])

返回当前的有效负载,这将是Message对象列表时is_multipart()为真,或者一个字符串时is_multipart()为假。如果有效载荷列表,把变异列表对象,可修改消息的有效载荷到位。

通过可选的参数我,get_payload()将返回有效载荷的第i个元素,从零算起,如果is_multipart()为True。如果i小于0或大于或等于在有效载荷中的项目数的IndexError将提高。如果有效载荷是一个字符串(例如is_multipart()为false),我被赋予一个类型错误引发。

可选的解码是一个标志,指示有效负载是否应该被解码与否,根据内容Transfer-Encoding头。当真正的消息是不是多部分,如果此头的值引号的可打印或Base64的有效载荷将被解码。如果一些其他的编码时,或Content-Transfer-Encoding头丢失,或者如果有效载荷有假Base64编码数据,返回的有效载荷,是(未解码)。如果消息是一个多和解码标志为true,则返回None。默认的解码是假。

set_payload(有效载荷[,字符集])

将整个消息对象的有效载荷的有效载荷。这是客户的责任,以确保有效载荷不变。可选字符集设置消息的默认字符集;见set_charset()了解详细信息。

改变在2.2.2版本:字符集参数添加。

set_charset(字符集)

设置字符集有效载荷为charset,它可以是一个字符集的实例(见email.charset),一个字符串,指定一个字符集,或无。如果它是一个字符串,它会被转换成一字符集实例。如果字符集是无,charset参数将从Content-Type头去掉(该消息不会被其他方式修改)。还有什么会产生一个TypeError。

如果没有现有MIME的版本标头1将被添加。如果没有现有的Content-Type头,一会用纯文本/一个增值。在Content-Type头是否已经存在与否,其字符集参数将被设置为charset.output_charset。如果charset.input_charset和charset.output_charset不同,有效载荷会被重新编码到output_charset。如果没有现有的内容-Transfer-Encoding头,那么有效载荷将传输编码,如果需要的话,使用指定的字符集,并用适当的值的报头将被添加。如果内容传送编码头已经存在,有效载荷被认为已经使用了内容传输编码正确的编码,并没有被修改。

该消息将被假定为类型text / *,用有效载荷Unicode或编码charset.input_charset。它将被编码或转换为charset.output_charset和转让正确编码的,如果需要的话,产生该消息的纯文本表示时。根据需要MIME头(MIME-版本,内容类型,内容传输编码)将被添加。

新的版本2.2.2。

get_charset()

返回与消息的有效载荷相关联的字符集的实例。

下面的方法来实现映射的界面来访问消息的RFC 2822头。需要注意的是有这些方法和法线贴图(即词典)的接口之间的一些语义差异。例如,在一个字典中没有重复键,但在这里,可能会有重复的邮件头。此外,在词典中没有保证为了)通过键(返回键,但在一个消息对象,标头总是在他们出现在原始邮件中,或者加入到该消息后,顺序返回。任何删除,然后重新添加报头总是附加到标题列表的末尾。

这些语义上的区别是故意的,偏向了极大的方便。

需要注意的是在所有情况下,任何包络头存在在该消息中没有包含在映射接口。

len ()

    返回标头的总数,包括重复。

contains (姓名)

    返回true,如果该消息对象有一个字段命名的名称。匹配行为不区分大小写和名称不应该包含尾随冒号。用于在运营商,例如:

    如果myMessage“邮件ID”:
        打印“消息ID:”,myMessage [‘邮件ID’]

getitem (姓名)

    返回指定的头字段的值。名称不应包含冒号字段分隔符。如果头部丢失,无则返回;一个KeyError异常是永远不会提高。

    请注意,如果指定字段多次出现在邮件的标题,正是这些字段值将被返回是不确定的。使用get_all()方法来获取所有的现存名为headers的值。

setitem (姓名,VAL)

    添加一个头与字段名名称和值VAL的消息。该字段被附加到消息的现有字段的末端。

    注意,这不覆盖或删除任何现有的头具有相同名称。如果你想确保新的头是一本用字段名的名称在邮件中只有先删除字段,例如:

    德尔味精[‘主题’]
    味精[‘主题’] =’的Python roolz!“

delitem (姓名)

    删除名为name字段的所有实例从消息的标题。没有引发异常,如果指定的域不存在于头部。

对象的has_key(名)

    返回true,如果邮件包含一个名为名称的头字段,否则返回false。

键()

    返回所有消息的头字段名称的列表。

值()

    返回所有消息的字段值的列表。

项目()

    返回包含所有消息的字段标题和值2元组的列表。

得到(名称[,failobj])

    返回指定的头字段的值。这是相同的getitem (),除非指定的头丢失(默认为无)可选failobj返回。

这里有一些额外有用的方法:

get_all(名称[,failobj])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值