\declaremodule{standard}{email.Iterators} \modulesynopsis{Iterate over a message object tree.} Iterating over a message object tree is fairly easy with the \method{Message.walk()} method. The \module{email.Iterators} module provides some useful higher level iterations over message object trees. \begin{funcdesc}{body_line_iterator}{msg\optional{, decode}} This iterates over all the payloads in all the subparts of \var{msg}, returning the string payloads line-by-line. It skips over all the subpart headers, and it skips over any subpart with a payload that isn't a Python string. This is somewhat equivalent to reading the flat text representation of the message from a file using \method{readline()}, skipping over all the intervening headers. Optional \var{decode} is passed through to \method{Message.get_payload()}. \end{funcdesc} \begin{funcdesc}{typed_subpart_iterator}{msg\optional{, maintype\optional{, subtype}}} This iterates over all the subparts of \var{msg}, returning only those subparts that match the MIME type specified by \var{maintype} and \var{subtype}. Note that \var{subtype} is optional; if omitted, then subpart MIME type matching is done only with the main type. \var{maintype} is optional too; it defaults to \mimetype{text}. Thus, by default \function{typed_subpart_iterator()} returns each subpart that has a MIME type of \mimetype{text/*}. \end{funcdesc} The following function has been added as a useful debugging tool. It should \emph{not} be considered part of the supported public interface for the package. \begin{funcdesc}{_structure}{msg\optional{, fp\optional{, level}}} Prints an indented representation of the content types of the message object structure. For example: \begin{verbatim} >>> 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 \end{verbatim} Optional \var{fp} is a file-like object to print the output to. It must be suitable for Python's extended print statement. \var{level} is used internally. \end{funcdesc}