<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">










<html>
  <head>
    <title>JAMES Mail Protocol Tester (MPT) - Source Xref report</title>
    <style type="text/css" media="all">
      @import url("./css/maven-base.css");
      @import url("./css/maven-theme.css");
      @import url("./css/site.css");
    </style>
    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
      </head>
  <body class="composite">
    <div id="banner">
                  <a href="http://james.apache.org/mpt/index.html" id="bannerLeft">
    
                                            <img src="images/james-mpt-logo.gif" alt="" />
    
            </a>
                        <a href="http://www.apache.org/index.html" id="bannerRight">
    
                                            <img src="images/asf-logo-reduced.gif" alt="" />
    
            </a>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
          
  

  
    
  
  
            <div class="xleft">
        Last Published: 07/07/2009
                      </div>
            <div class="xright">      <a href="../index.html">JAMES Project</a>
          |
          <a href="../server/index.html">Server</a>
          |
          <a href="../mailet/index.html">Mailets</a>
          |
          <a href="../jspf/index.html">jSPF</a>
          |
          <a href="../mime4j/index.html">Mime4J</a>
          |
          <a href="../jsieve/index.html">JSieve</a>
          |
          <a href="../postage/index.html">Postage</a>
          
  

  
    
  
  
  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
           
  

  
    
  
  
                   <h5>Mail Protocol Tester</h5>
        <ul>
              
    <li class="none">
              <a href="http://james.apache.org/mpt/index.html">Overview</a>
        </li>
              
    <li class="none">
              <a href="release-notes.html">Release Notes</a>
        </li>
              
    <li class="none">
              <a href="http://james.apache.org/mpt/main">Main Library</a>
        </li>
              
    <li class="none">
              <a href="http://james.apache.org/mpt/antlib">AntLib</a>
        </li>
              
    <li class="none">
              <a href="http://james.apache.org/mpt/app">Application</a>
        </li>
          </ul>
          <h5>Releases</h5>
        <ul>
              
    <li class="none">
              <a href="http://james.apache.org/mpt/0.1">0.1 Documentation</a>
        </li>
              
    <li class="none">
              <a href="http://james.apache.org/mpt/0.1/release-notes.html">0.1 Release Notes</a>
        </li>
          </ul>
          <h5>The Apache Software Foundation</h5>
        <ul>
              
    <li class="none">
              <a href="http://jakarta.apache.org/site/getinvolved.html">Get Involved</a>
        </li>
              
    <li class="none">
              <a href="http://apache.org/foundation/faq.html">FAQ</a>
        </li>
              
    <li class="none">
              <a href="http://apache.org/foundation/sponsorship.html">Sponsorship</a>
        </li>
              
    <li class="none">
              <a href="http://apache.org/foundation/contributing.html">Donations</a>
        </li>
              
    <li class="none">
              <a href="http://apache.org/foundation/thanks.html">Thanks</a>
        </li>
          </ul>
          <h5>Downloads</h5>
        <ul>
              
    <li class="none">
              <a href="../download.cgi">Stable releases</a>
        </li>
              
    <li class="none">
              <a href="../downloadunstable.cgi">Unstable releases</a>
        </li>
              
    <li class="none">
              <a href="http://people.apache.org/builds/james/nightly/">Nightly builds</a>
        </li>
          </ul>
                                       <a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy">
            <img alt="Built by Maven" src="./images/logos/maven-feather.png"></img>
          </a>
                       
  

  
    
  
  
        </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <div class="section"><h2>Cross-reference Java source code</h2><p>This report includes a cross-reference of the project's sources. Each source entry is also linked with its corresponding Javadoc (if Javadoc was generated).</p><div class="section"><h3>Project sources</h3><p>No project sources were found. </p></div><div class="section"><h3>Test sources</h3><p>No test sources were found. </p></div></div>
      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">&#169;  
          2008-2009
    
          The Apache Software Foundation
          
  

  
    
  
  
  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
    </script>
    <script type="text/javascript">
      _uacct = "UA-1384591-1";
      urchinTracker();
    </script>
  </body>
</html>
