19.1.13. email.iterators:迭代器

源代码: Lib / email / iterators.py

使用Message.walk方法在消息对象树上迭代是相当容易的。email.iterators模块在消息对象树上提供了一些有用的更高级别的迭代。

email.iterators.body_line_iterator(msg, decode=False)

这将遍历msg的所有子部分中的所有有效内容,逐行返回字符串有效内容。它跳过所有的子部分头部,并且跳过具有不是Python字符串的有效载荷的任何子部分。这有点等效于使用readline()从文件中读取消息的平面文本表示,跳过所有中间头。

可选解码传递到Message.get_payload

email.iterators.typed_subpart_iterator(msg, maintype='text', subtype=None)

这会遍历msg的所有子部分,只返回与maintype子类型指定的MIME类型匹配的子部分。

请注意,子类型是可选的;如果省略,则子部分MIME类型匹配仅与主类型匹配。maintype也是可选的;它默认为文本

因此,默认情况下,typed_subpart_iterator()返回MIME类型为text / *的每个子部分。

已添加以下函数作为有用的调试工具。它应被视为包支持的公共接口的一部分。

email.iterators._structure(msg, fp=None, level=0, include_default=False)

打印消息对象结构的内容类型的缩进表示。例如:

>>> msg = email.message_from_file(somefile)
>>> _structure(msg)
multipart/mixed
    text/plain
    text/plain
    multipart/digest
        message/rfc822
            text/plain
        message/rfc822
            text/plain
        message/rfc822
            text/plain
        message/rfc822
            text/plain
        message/rfc822
            text/plain
    text/plain

可选fp是将输出打印到的类文件对象。它必须适用于Python的print()函数。级别在内部使用。include_default,如果为true,还会输出默认类型。