Skip to main content

19.1.15. email.iterators:迭代器

源代码: Lib/email/iterators.py


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

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

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

可选的 decode 传递到 Message.get_payload

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

这遍历 msg 的所有子部分,只返回匹配由 maintypesubtype 指定的MIME类型的那些子部分。

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

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

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

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() 功能。 level 在内部使用。 include_default,如果为true,还会打印默认类型。