email.iterators: 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, повертаючи лише ті підчастини, які відповідають типу MIME, визначеному maintype і 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 — це файлоподібний об’єкт, у який потрібно надрукувати вихідні дані. Він має відповідати функції print() Python. level використовується внутрішньо. include_default, якщо true, також друкує тип за замовчуванням.