% This document is largely a stub used to allow the email package docs
% to be formatted separately from the rest of the Python
% documentation.  This allows the documentation to be released
% independently of the rest of Python since the email package is being
% maintained for multiple Python versions, and on an accelerated
% schedule.

\documentclass{howto}

\title{email Package Reference}
\author{Barry Warsaw}
\authoraddress{\email{barry@python.org}}

\date{\today}
\release{3.0}			% software release, not documentation
\setreleaseinfo{}		% empty for final release
\setshortversion{3.0}		% major.minor only for software

\begin{document}

\maketitle

\begin{abstract}
  The \module{email} package provides classes and utilities to create,
  parse, generate, and modify email messages, conforming to all the
  relevant email and MIME related RFCs.
\end{abstract}

% The ugly "%begin{latexonly}" pseudo-environment suppresses the table
% of contents for HTML generation.
%
%begin{latexonly}
\tableofcontents
%end{latexonly}

\section{Introduction}
The \module{email} package provides classes and utilities to create,
parse, generate, and modify email messages, conforming to all the
relevant email and MIME related RFCs.

This document describes version 3.0 of the \module{email} package, which is
distributed with Python 2.4 and is available as a standalone distutils-based
package for use with Python 2.3.  \module{email} 3.0 is not compatible with
Python versions earlier than 2.3.  For more information about the
\module{email} package, including download links and mailing lists, see
\ulink{Python's email SIG}{http://www.python.org/sigs/email-sig}.

The documentation that follows was written for the Python project, so
if you're reading this as part of the standalone \module{email}
package documentation, there are a few notes to be aware of:

\begin{itemize}
\item Deprecation and ``version added'' notes are relative to the
      Python version a feature was added or deprecated.

\item If you're reading this documentation as part of the
      standalone \module{email} package, some of the internal links to
      other sections of the Python standard library may not resolve.

\end{itemize}

\input{email}

\end{document}
