<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at May 28, 2013
 | Rendered using Apache Maven Fluido Skin 1.3.0
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20130528" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Mail Transport - Project Summary</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />

      
    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.0.min.js"></script>

    
            </head>
        <body class="topBarDisabled">
          
                
                    
    
        <div class="container-fluid">
          <div id="banner">
        <div class="pull-left">
                                <div id="bannerLeft">
                <h2>Mail Transport</h2>
                </div>
                      </div>
        <div class="pull-right">                                <a href="../.." id="bannerRight">
                                                                                                <img src="../../images/axis-small.png"  alt="Apache Axis"/>
                </a>
      </div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
                
                    
                              <li class="">
                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
        Apache</a>
        </li>
      <li class="divider ">/</li>
            <li class="">
                    <a href="../../../../" title="Axis">
        Axis</a>
        </li>
      <li class="divider ">/</li>
            <li class="">
                    <a href="../../../" title="Axis 1.x">
        Axis 1.x</a>
        </li>
      <li class="divider ">/</li>
            <li class="">
                    <a href="../../" title="Java">
        Java</a>
        </li>
      <li class="divider ">/</li>
                <li class="">
                    <a href="./" title="Mail Transport">
        Mail Transport</a>
        </li>
      <li class="divider ">/</li>
        <li class="">Project Summary</li>
        
                
                    
                  <li id="publishDate" class="pull-right">Last Published: 2013-05-28</li> <li class="divider pull-right">|</li>
              <li id="projectVersion" class="pull-right">Version: 1.4.1-SNAPSHOT</li>
            
                            </ul>
      </div>

            
      <div class="row-fluid">
        <div id="leftColumn" class="span3">
          <div class="well sidebar-nav">
                
                    
                <ul class="nav nav-list">
                    <li class="nav-header">Project Documentation</li>
                                                                                                                                
      <li>
    
                          <a href="project-info.html" title="Project Information">
          <i class="icon-chevron-down"></i>
        Project Information</a>
                    <ul class="nav nav-list">
                      
      <li>
    
                          <a href="index.html" title="About">
          <i class="none"></i>
        About</a>
            </li>
                      
      <li class="active">
    
            <a href="#"><i class="none"></i>Project Summary</a>
          </li>
                      
      <li>
    
                          <a href="dependencies.html" title="Dependencies">
          <i class="none"></i>
        Dependencies</a>
            </li>
              </ul>
        </li>
                              <li class="nav-header">Apache</li>
                                
      <li>
    
                          <a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="externalLink" title="License">
          <i class="none"></i>
        License</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship">
          <i class="none"></i>
        Sponsorship</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks">
          <i class="none"></i>
        Thanks</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/security/" class="externalLink" title="Security">
          <i class="none"></i>
        Security</a>
            </li>
            </ul>
                
                    
                            <form id="search-form" action="http://www.google.com/search" method="get" >
    
  <input value="ws.apache.org/axis/java" name="sitesearch" type="hidden"/>
  <input class="search-query" name="q" id="query" type="text" />
</form>
<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
          
          <hr class="divider" />

           <div id="poweredBy">
                            <div class="clear"></div>
                            <div class="clear"></div>
                            <div class="clear"></div>
                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
      </a>
                  </div>
          </div>
        </div>
        
                
        <div id="bodyColumn"  class="span9" >
                                  
            <div class="section"><h2>Project Summary<a name="Project_Summary"></a></h2><a name="Project_Summary"></a><div class="section"><h3>Project Information<a name="Project_Information"></a></h3><a name="Project_Information"></a><table border="0" class="table table-striped"><tr class="a"><th>Field</th><th>Value</th></tr><tr class="b"><td>Name</td><td>Mail Transport</td></tr><tr class="a"><td>Description</td><td>The Apache Software Foundation provides support for the Apache community of open-source software projects.
    The Apache projects are characterized by a collaborative, consensus based development process, an open and
    pragmatic software license, and a desire to create high quality software that leads the way in its field.
    We consider ourselves not simply a group of projects sharing a server, but rather a community of developers
    and users.</td></tr><tr class="b"><td>Homepage</td><td><a class="externalLink" href="http://axis.apache.org/axis/java/transports/mail">http://axis.apache.org/axis/java/transports/mail</a></td></tr></table></div><div class="section"><h3>Project Organization<a name="Project_Organization"></a></h3><a name="Project_Organization"></a><table border="0" class="table table-striped"><tr class="a"><th>Field</th><th>Value</th></tr><tr class="b"><td>Name</td><td>The Apache Software Foundation</td></tr><tr class="a"><td>URL</td><td><a class="externalLink" href="http://www.apache.org/">http://www.apache.org/</a></td></tr></table></div><div class="section"><h3>Build Information<a name="Build_Information"></a></h3><a name="Build_Information"></a><table border="0" class="table table-striped"><tr class="a"><th>Field</th><th>Value</th></tr><tr class="b"><td>GroupId</td><td>org.apache.axis</td></tr><tr class="a"><td>ArtifactId</td><td>axis-rt-transport-mail</td></tr><tr class="b"><td>Version</td><td>1.4.1-SNAPSHOT</td></tr><tr class="a"><td>Type</td><td>jar</td></tr><tr class="b"><td>JDK Rev</td><td>1.4</td></tr></table></div></div>
                  </div>
            </div>
          </div>

    <hr/>

    <footer>
            <div class="container-fluid">
              <div class="row span12">Copyright &copy;                    2000-2013
                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
            All Rights Reserved.      
                    
      </div>

        
        
                </div>
    </footer>
  </body>
</html>