Kaydet (Commit) 47db2527 authored tarafından Barry Warsaw's avatar Barry Warsaw

Add some documentation which describes how to use the email package

instead of rfc822 as the Message factory.
üst dc31dc02
......@@ -16,7 +16,7 @@ mailbox file. The optional \var{factory} parameter is a callable that
should create new message objects. \var{factory} is called with one
argument, \var{fp} by the \method{next()} method of the mailbox
object. The default is the \class{rfc822.Message} class (see the
\refmodule{rfc822} module).
\refmodule{rfc822} module -- and the note below).
For maximum portability, messages in a \UNIX-style mailbox are
separated by any line that begins exactly with the string \code{'From
......@@ -83,6 +83,40 @@ messages start with the EOOH line and end with a line containing only
\class{UnixMailbox} class.
\end{classdesc}
Note that because the \refmodule{rfc822} module is deprecated, it is
recommended that you use the \refmodule{email} package to create
message objects from a mailbox. (The default can't be changed for
backwards compatibility reasons.) The safest way to do this is with
bit of code:
\begin{verbatim}
import email
import email.Errors
import mailbox
def msgfactory(fp):
try:
return email.message_from_file(fp)
except email.Errors.MessageParseError:
# Don't return None since that will
# stop the mailbox iterator
return ''
mbox = mailbox.UnixMailbox(fp, msgfactory)
\end{verbatim}
The above wrapper is defensive against ill-formed MIME messages in the
mailbox, but you have to be prepared to receive the empty string from
the mailbox's \function{next()} method. On the other hand, if you
know your mailbox contains only well-formed MIME messages, you can
simplify this to:
\begin{verbatim}
import email
import mailbox
mbox = mailbox.UnixMailbox(fp, email.message_from_file)
\end{verbatim}
\begin{seealso}
\seetitle[http://www.qmail.org/man/man5/mbox.html]{mbox -
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment