# `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, також друкує тип за замовчуванням.