<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- 
/*
 *  Copyright 2004 the mime4j project
 *
 *  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>Samples</title>
    </properties>
    <body>
        <section name="Samples">
            <p>
            The mime4j distribution includes a number of sample applications
            which demonstrate how the library could be used. This section
            gives you a short review of those samples. For more information
            you should download the distribution and study the sample sources.
            The samples are in in <code>samples/</code> sub-directory.
            </p>
            <table>
                    <tr>
                        <th>Sample</th>
                        <th>Description</th>
                    </tr>
                    <tr>
                        <td>
                            <code>org.mime4j.samples.tree.MessageTree</code>
                        </td>
                        <td>Displays a tree of the contents of a
                            mime4j <code>Message</code> object in a Swing GUI.
                            To try it out run
                            <blockquote>
                             <code>java org.mime4j.samples.tree.MessageTree path/to/message.msg</code>
                            </blockquote>
                            The output is very useful if
                            you want the study the structure of MIME messages.
                            </td>
                    </tr>
                    <tr>
                        <td>
                            <code>org.mime4j.samples.sax.Mime2Sax</code>
                        </td>
                        <td></td>
                    </tr>
                    <tr>
                        <td>
                            <code>org.mime4j.samples.pgp.PGPSignatureVerifier</code>
                        </td>
                        <td></td>
                    </tr>
                </table>
        </section>
    </body>
</document>
