18.1.10. email.iterators:迭代器

使用Message.walk方法可以很容易地遍历消息对象树。 email.iterators模块在消息对象树上提供了一些有用的更高级别的迭代。

  • email.iterators. body_line_iterator(* msg * [,* decode *])
    • 这将迭代* msg *的所有子部分中的所有有效负载,并逐行返回字符串有效负载。它会跳过所有子部分的标题,并且会跳过带有非 Python 字符串的有效负载的任何子部分。这有点等效于使用readline()从文件中读取消息的纯文本表示形式,跳过所有中间的 Headers。

可选的* decode *传递给Message.get_payload

  • email.iterators. typed_subpart_iterator(* msg * [,* maintype * [,* subtype *]])
    • 这将遍历* msg 的所有子部分,仅返回与 maintype subtype *指定的 MIME 类型匹配的那些子部分。

注意,* subtype *是可选的;如果Ellipsis,则仅对主类型进行子部分 MIME 类型匹配。 * maintype 也是可选的;它默认为 text *。

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

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

  • email.iterators. _structure(* msg * [,* fp * [,* level *]])
    • 打印消息对象结构的 Content Type 的缩进表示。例如:
>>> 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 的扩展打印语句。 * level *在内部使用。