\section{\module{quopri} ---
         Encode and decode MIME quoted-printable data}

\declaremodule{standard}{quopri}
\modulesynopsis{Encode and decode files using the MIME
                quoted-printable encoding.}


This module performs quoted-printable transport encoding and decoding,
as defined in \rfc{1521}: ``MIME (Multipurpose Internet Mail
Extensions) Part One: Mechanisms for Specifying and Describing the
Format of Internet Message Bodies''.  The quoted-printable encoding is
designed for data where there are relatively few nonprintable
characters; the base64 encoding scheme available via the
\refmodule{base64} module is more compact if there are many such
characters, as when sending a graphics file.
\indexii{quoted-printable}{encoding}
\index{MIME!quoted-printable encoding}


\begin{funcdesc}{decode}{input, output\optional{,header}}
Decode the contents of the \var{input} file and write the resulting
decoded binary data to the \var{output} file.
\var{input} and \var{output} must either be file objects or objects that
mimic the file object interface. \var{input} will be read until
\code{\var{input}.readline()} returns an empty string.
If the optional argument \var{header} is present and true, underscore
will be decoded as space. This is used to decode
``Q''-encoded headers as described in \rfc{1522}: ``MIME (Multipurpose Internet Mail Extensions)
Part Two: Message Header Extensions for Non-ASCII Text''.
\end{funcdesc}

\begin{funcdesc}{encode}{input, output, quotetabs}
Encode the contents of the \var{input} file and write the resulting
quoted-printable data to the \var{output} file.
\var{input} and \var{output} must either be file objects or objects that
mimic the file object interface. \var{input} will be read until
\code{\var{input}.readline()} returns an empty string.
\var{quotetabs} is a flag which controls whether to encode embedded
spaces and tabs; when true it encodes such embedded whitespace, and
when false it leaves them unencoded.  Note that spaces and tabs
appearing at the end of lines are always encoded, as per \rfc{1521}.
\end{funcdesc}

\begin{funcdesc}{decodestring}{s\optional{,header}}
Like \function{decode()}, except that it accepts a source string and
returns the corresponding decoded string.
\end{funcdesc}

\begin{funcdesc}{encodestring}{s\optional{, quotetabs}}
Like \function{encode()}, except that it accepts a source string and
returns the corresponding encoded string.  \var{quotetabs} is optional
(defaulting to 0), and is passed straight through to
\function{encode()}.
\end{funcdesc}


\begin{seealso}
  \seemodule{mimify}{General utilities for processing of MIME messages.}
  \seemodule{base64}{Encode and decode MIME base64 data}
\end{seealso}
