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/*的子部分。

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

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为真,则打印默认类型。