# 19.1.15. `email.iterators`: Itérateurs

Code source : Lib/email/iterators.py

Itérer sur l’arborescence d’un objet message est plutôt simple avec la méthode `Message.walk`. Le module `email.iterators` fournit des fonctionnalités d’itérations de plus haut niveau sur les arbres d’objets messages.

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

  Cette fonction permet d’itérer sur tous les contenus de tous les éléments de msg, en retournant les contenus sous forme de chaînes de caractères ligne par ligne. Il saute les entêtes des sous éléments, et tous les sous éléments dont le contenu n’est pas une chaîne de caractères Python. C’est en quelque sorte équivalent à une lecture plate d’une représentation textuelle du message à partir d’un fichier en utilisant `readline()`, et en sautant toutes les entêtes intermédiaires.

  Le paramètre optionnel decode est transmis à la méthode `Message.get_payload`.

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

  Cette fonction permet d’itérer sur tous les sous éléments de msg, en retournant seulement les sous éléments qui correspondent au type MIME spécifié par maintype et subtype.

  Notez que le paramètre subtype est optionnel ; s’il n’est pas présent, alors le type MIME du sous élément est seulement composé du type principal. maintype est également optionnel ; sa valeur par défaut est text.

  En conséquence, par défaut, `typed_subpart_iterator()` retourne chaque sous élément qui a un type MIME de type text/*.

La fonction suivante a été ajouté en tant qu’un outil de débogage. Elle ne devrait pas être considérée comme une interface publique supportée pour ce paquet.

`email.iterators.``_structure`(msg, fp=None, level=0, include_default=False)

  Affiche une représentation indentée des types de contenu de la structure de l’objet message. Par exemple :

      >>> 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

  Le paramètre optionnel fp est un objet fichier-compatible dans lequel on peut écrire le flux de sortie. Il doit être approprié pour la fonction de Python `print()`. level est utilisé en interne. include_default, si vrai, affiche aussi le type par défaut.