# `email.iterators`: Iteradores

Código fuente: Lib/email/iterators.py

Iterar sobre un árbol de objetos mensaje es bastante fácil con el método `Message.walk`. El módulo `email.iterators` proporciona algunos iteradores útiles de más alto nivel sobre árboles de objetos mensaje.

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

  Itera sobre todas las cargas útiles de todas las subpartes de msg, retornando las cargas útiles en cadenas de caracteres línea por línea. Descarta todas las cabeceras de las subpartes, y descarta cualquier subparte con una carga útil que no sea una cadena de caracteres de Python. Esto de alguna forma es equivalente a leer la representación en texto plano del mensaje desde un fichero usando `readline()`, descartando todas las cabeceras intermedias.

  El argumento opcional decode se pasa a través de `Message.get_payload`.

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

  Itera sobre todas las subpartes de msg, retornando solo las subpartes que coincidan el tipo MIME especificado por maintype y subtype.

  Note que subtype es opcional; si se omite, entonces se comprobará si el tipo MIME de las subpartes coincide con el tipo principal solamente. maintype es opcional también; su valor por defecto es text.

  Por tanto, por defecto `typed_subpart_iterator()` retorna cada parte que tenga un tipo MIME text/*.

La siguiente función se ha añadido como una útil herramienta de depuración. No debe ser considerada parte de la interfaz pública soportada para este paquete.

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

  Imprime una representación con sangrías de los tipos del contenido de la estructura de objetos mensaje. Por ejemplo:

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

  El argumento opcional fp es un objeto similar a un fichero en el que imprimir la salida. Debe ser adecuado para la función de Python `print()`. Se usa level internamente. include_default, si tiene su valor a verdadero, imprime el tipo por defecto también.