\section{\module{mimify} ---
         MIME processing of mail messages}

\declaremodule{standard}{mimify}
\modulesynopsis{Mimification and unmimification of mail messages.}


The mimify module defines two functions to convert mail messages to
and from MIME format.  The mail message can be either a simple message
or a so-called multipart message.  Each part is treated separately.
Mimifying (a part of) a message entails encoding the message as
quoted-printable if it contains any characters that cannot be
represented using 7-bit \ASCII.  Unmimifying (a part of) a message
entails undoing the quoted-printable encoding.  Mimify and unmimify
are especially useful when a message has to be edited before being
sent.  Typical use would be:

\begin{verbatim}
unmimify message
edit message
mimify message
send message
\end{verbatim}

The modules defines the following user-callable functions and
user-settable variables:

\begin{funcdesc}{mimify}{infile, outfile}
Copy the message in \var{infile} to \var{outfile}, converting parts to
quoted-printable and adding MIME mail headers when necessary.
\var{infile} and \var{outfile} can be file objects (actually, any
object that has a \method{readline()} method (for \var{infile}) or a
\method{write()} method (for \var{outfile})) or strings naming the files.
If \var{infile} and \var{outfile} are both strings, they may have the
same value.
\end{funcdesc}

\begin{funcdesc}{unmimify}{infile, outfile\optional{, decode_base64}}
Copy the message in \var{infile} to \var{outfile}, decoding all
quoted-printable parts.  \var{infile} and \var{outfile} can be file
objects (actually, any object that has a \method{readline()} method (for
\var{infile}) or a \method{write()} method (for \var{outfile})) or strings
naming the files.  If \var{infile} and \var{outfile} are both strings,
they may have the same value.
If the \var{decode_base64} argument is provided and tests true, any
parts that are coded in the base64 encoding are decoded as well.
\end{funcdesc}

\begin{funcdesc}{mime_decode_header}{line}
Return a decoded version of the encoded header line in \var{line}.
\end{funcdesc}

\begin{funcdesc}{mime_encode_header}{line}
Return a MIME-encoded version of the header line in \var{line}.
\end{funcdesc}

\begin{datadesc}{MAXLEN}
By default, a part will be encoded as quoted-printable when it
contains any non-\ASCII{} characters (i.e., characters with the 8th bit
set), or if there are any lines longer than \constant{MAXLEN} characters
(default value 200).  
\end{datadesc}

\begin{datadesc}{CHARSET}
When not specified in the mail headers, a character set must be filled
in.  The string used is stored in \constant{CHARSET}, and the default
value is ISO-8859-1 (also known as Latin1 (latin-one)).
\end{datadesc}

This module can also be used from the command line.  Usage is as
follows:
\begin{verbatim}
mimify.py -e [-l length] [infile [outfile]]
mimify.py -d [-b] [infile [outfile]]
\end{verbatim}
to encode (mimify) and decode (unmimify) respectively.  \var{infile}
defaults to standard input, \var{outfile} defaults to standard output.
The same file can be specified for input and output.

If the \strong{-l} option is given when encoding, if there are any lines
longer than the specified \var{length}, the containing part will be
encoded.

If the \strong{-b} option is given when decoding, any base64 parts will
be decoded as well.

\begin{seealso}
  \seemodule{quopri}{Encode and decode MIME quoted-printable files.}
\end{seealso}
