<?xml version="1.0"?>
<!--
   Copyright 2003-2004 The Apache Software Foundation

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->

<document>

 <properties>
  <title>Commons Email</title>
  <author email="commons-dev@jakarta.apache.org">Commons Documentation Team</author>
 </properties>

 <body>

<section name="Commons Email">

<p>
Commons-Email aims to provide a API for sending email.
It is build on top of the Java Mail API, which it aims to simplify.
All help is gratefully received.
</p>
<p>
Some of the mail classes that are provided are as follows:
<ul>
<li>
<b>SimpleEmail</b> -
This class is used to send basic text based emails.
</li>
<li>
<b>MultiPartEmail</b> -
This class is used to send multipart messages.
This allows a text message with attachments either inline or attached.
</li>
<li>
<b>HtmlEmail</b> -
This class is used to send HTML formatted emails.
It has all of the capabilities as MultiPartEmail allowing attachments to be easily added.
It also supports embedded images.
</li>
<li>
<b>EmailAttachment</b> -
This is a simple container class to allow for easy handling of attachments.
It is for use with instances of MultiPartEmail and HtmlEmail.
</li>
</ul>
</p>
<subsection name="Status">
<p>
 <ul>
  <li>This code is in the commons <i>sandbox</i></li>
  <li>The code is unreleased</li>
  <li>Methods and classes can and will appear and disappear without warning</li>
  <li>If you like the code and want to push it towards a release, join the mailing list!</li>
 </ul>
</p>
</subsection>
</section>


<section name="Documentation">
<p>
 <ul>
  <li>The <a href="apidocs/index.html">Javadoc</a> of the latest CVS</li>
  <li>The <a href="http://cvs.apache.org/viewcvs/jakarta-commons-sandbox/email/">CVS repository</a> can be browsed.</li>
 </ul>
</p>
</section>


<section name="Releases">
<p>
None. This is a <i>sandbox</i> component.
</p>
</section>

</body>
</document>

