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.
