<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.11.1 at 2022-06-07 
 | Rendered using Apache Maven Fluido Skin 1.6
-->
<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="20220607" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Axis2 &#x2013; Mail transport</title>
    <link rel="stylesheet" href="../css/apache-maven-fluido-1.6.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.6.min.js"></script>
      </head>
    <body class="topBarDisabled">
      <div class="container-fluid">
      <div id="banner">
        <div class="pull-left"><a href="http://www.apache.org/" id="bannerLeft"><img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Axis2"/></a></div>
        <div class="pull-right"><a href=".././" id="bannerRight"><img src="../images/axis.jpg" /></a></div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
        <li id="publishDate">Last Published: 2022-06-07<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.8.1<span class="divider">|</span></li>
        <li class=""><a href="http://www.apache.org" class="externalLink" title="Apache">Apache</a><span class="divider">/</span></li>
      <li class=""><a href="../index.html" title="Axis2/Java">Axis2/Java</a><span class="divider">/</span></li>
    <li class="active ">Mail transport</li>
        </ul>
      </div>
      <div class="row-fluid">
        <div id="leftColumn" class="span2">
          <div class="well sidebar-nav">
<ul class="nav nav-list">
          <li class="nav-header">Axis2/Java</li>
    <li><a href="../index.html" title="Home"><span class="none"></span>Home</a>  </li>
    <li><a href="../download.html" title="Downloads"><span class="none"></span>Downloads</a>  </li>
    <li><a href="javascript:void(0)" title="Release Notes"><span class="icon-chevron-down"></span>Release Notes</a>
      <ul class="nav nav-list">
    <li><a href="../release-notes/1.6.1.html" title="1.6.1"><span class="none"></span>1.6.1</a>  </li>
    <li><a href="../release-notes/1.6.2.html" title="1.6.2"><span class="none"></span>1.6.2</a>  </li>
    <li><a href="../release-notes/1.6.3.html" title="1.6.3"><span class="none"></span>1.6.3</a>  </li>
    <li><a href="../release-notes/1.6.4.html" title="1.6.4"><span class="none"></span>1.6.4</a>  </li>
    <li><a href="../release-notes/1.7.0.html" title="1.7.0"><span class="none"></span>1.7.0</a>  </li>
    <li><a href="../release-notes/1.7.1.html" title="1.7.1"><span class="none"></span>1.7.1</a>  </li>
    <li><a href="../release-notes/1.7.2.html" title="1.7.2"><span class="none"></span>1.7.2</a>  </li>
    <li><a href="../release-notes/1.7.3.html" title="1.7.3"><span class="none"></span>1.7.3</a>  </li>
    <li><a href="../release-notes/1.7.4.html" title="1.7.4"><span class="none"></span>1.7.4</a>  </li>
    <li><a href="../release-notes/1.7.5.html" title="1.7.5"><span class="none"></span>1.7.5</a>  </li>
    <li><a href="../release-notes/1.7.6.html" title="1.7.6"><span class="none"></span>1.7.6</a>  </li>
    <li><a href="../release-notes/1.7.7.html" title="1.7.7"><span class="none"></span>1.7.7</a>  </li>
    <li><a href="../release-notes/1.7.8.html" title="1.7.8"><span class="none"></span>1.7.8</a>  </li>
    <li><a href="../release-notes/1.7.9.html" title="1.7.9"><span class="none"></span>1.7.9</a>  </li>
    <li><a href="../release-notes/1.8.0.html" title="1.8.0"><span class="none"></span>1.8.0</a>  </li>
    <li><a href="../release-notes/1.8.1.html" title="1.8.1"><span class="none"></span>1.8.1</a>  </li>
      </ul>
  </li>
    <li><a href="../modules/index.html" title="Modules"><span class="none"></span>Modules</a>  </li>
    <li><a href="../tools/index.html" title="Tools"><span class="none"></span>Tools</a>  </li>
          <li class="nav-header">Documentation</li>
    <li><a href="../docs/toc.html" title="Table of Contents"><span class="none"></span>Table of Contents</a>  </li>
    <li><a href="../docs/installationguide.html" title="Installation Guide"><span class="none"></span>Installation Guide</a>  </li>
    <li><a href="../docs/quickstartguide.html" title="QuickStart Guide"><span class="none"></span>QuickStart Guide</a>  </li>
    <li><a href="../docs/userguide.html" title="User Guide"><span class="none"></span>User Guide</a>  </li>
    <li><a href="../docs/jaxws-guide.html" title="JAXWS Guide"><span class="none"></span>JAXWS Guide</a>  </li>
    <li><a href="../docs/pojoguide.html" title="POJO Guide"><span class="none"></span>POJO Guide</a>  </li>
    <li><a href="../docs/spring.html" title="Spring Guide"><span class="none"></span>Spring Guide</a>  </li>
    <li><a href="../docs/webadminguide.html" title="Web Administrator's Guide"><span class="none"></span>Web Administrator's Guide</a>  </li>
    <li><a href="../docs/migration.html" title="Migration Guide (from Axis1)"><span class="none"></span>Migration Guide (from Axis1)</a>  </li>
          <li class="nav-header">Resources</li>
    <li><a href="../faq.html" title="FAQ"><span class="none"></span>FAQ</a>  </li>
    <li><a href="../articles.html" title="Articles"><span class="none"></span>Articles</a>  </li>
    <li><a href="http://wiki.apache.org/ws/FrontPage/Axis2/" class="externalLink" title="Wiki"><span class="none"></span>Wiki</a>  </li>
    <li><a href="../refLib.html" title="Reference Library"><span class="none"></span>Reference Library</a>  </li>
    <li><a href="../apidocs/index.html" title="Online Java Docs"><span class="none"></span>Online Java Docs</a>  </li>
          <li class="nav-header">Get Involved</li>
    <li><a href="../overview.html" title="Overview"><span class="none"></span>Overview</a>  </li>
    <li><a href="../git.html" title="Checkout the Source"><span class="none"></span>Checkout the Source</a>  </li>
    <li><a href="../mail-lists.html" title="Mailing Lists"><span class="none"></span>Mailing Lists</a>  </li>
    <li><a href="../release-process.html" title="Release Process"><span class="none"></span>Release Process</a>  </li>
    <li><a href="../guidelines.html" title="Developer Guidelines"><span class="none"></span>Developer Guidelines</a>  </li>
    <li><a href="../siteHowTo.html" title="Build the Site"><span class="none"></span>Build the Site</a>  </li>
          <li class="nav-header">Project Information</li>
    <li><a href="../team-list.html" title="Project Team"><span class="none"></span>Project Team</a>  </li>
    <li><a href="../issue-tracking.html" title="Issue Tracking"><span class="none"></span>Issue Tracking</a>  </li>
    <li><a href="http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/" class="externalLink" title="Source Code"><span class="none"></span>Source Code</a>  </li>
    <li><a href="../thanks.html" title="Acknowledgements"><span class="none"></span>Acknowledgements</a>  </li>
          <li class="nav-header">Apache</li>
    <li><a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="externalLink" title="License"><span class="none"></span>License</a>  </li>
    <li><a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship"><span class="none"></span>Sponsorship</a>  </li>
    <li><a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks"><span class="none"></span>Thanks</a>  </li>
    <li><a href="http://www.apache.org/security/" class="externalLink" title="Security"><span class="none"></span>Security</a>  </li>
  </ul>
          <hr />
          <div id="poweredBy">
              <div class="clear"></div>
              <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="span10" >

    
        <section>
<h2><a name="Introduction"></a>Introduction</h2>
            
<p>The mail transport allows to send and receive messages using MIME compliant mail messages. The transport sender
            transmits outgoing messages using SMTP, while the transport listener connects to one or more mail accounts
            and periodically polls these accounts for new incoming messages. The implementation is based on
            <a class="externalLink" href="http://java.sun.com/products/javamail/">JavaMail</a> and therefore supports any mail store protocol
            for which a JavaMail provider is available.</p>
        </section>
        <section>
<h2><a name="Transport_listener"></a>Transport listener</h2>
          <section>
<h3><a name="Configuration"></a>Configuration</h3>
            
<div>
<pre>    &lt;transportReceiver name=&quot;mailto&quot; class=&quot;org.apache.axis2.transport.mail.MailTransportListener&quot;/&gt;</pre></div>
          </section>
          <section>
<h3><a name="Endpoint_configuration"></a>Endpoint configuration</h3>
            
<p>Endpoints can be configured both at the transport level and at the service level. In order to receive messages using
            the mail transport, the listener or the service must be configured with a set of parameters
            to access the corresponding mailbox account. If messages from the mail account should be
            directly dispatched to a given service, than the parameters must be specified on that service.
            If on the other hand messages from that account can't be pre-dispatched to a specific service
            (e.g. because the account is used to receive responses to outgoing messages), then the parameters
            must be added to the <code>transportReceiver</code> element in <code>axis2.xml</code>.</p>
            
<p>All parameters starting with <code>mail.</code> are
            interpreted as JavaMail environment properties. The most relevant are <code>mail.<i>&lt;protocol&gt;</i>.host</code>
            and <code>mail.<i>&lt;protocol&gt;</i>.user</code>, where <code><i>&lt;protocol&gt;</i></code> is typically <code>pop3</code>
            or <code>imap</code>. Assuming that Sun's JavaMail implementation is used, the complete list of supported properties for these
            two protocols can be found <a class="externalLink" href="http://java.sun.com/products/javamail/javadocs/com/sun/mail/pop3/package-summary.html">here</a>
            and <a class="externalLink" href="http://java.sun.com/products/javamail/javadocs/com/sun/mail/imap/package-summary.html">here</a>.</p>
            
<p>In additional to the JavaMail environment properties, the following transport specific service parameters are
            used:</p>
            
<table border="0" class="table table-striped">
                
<tr class="a">
                    
<th>Parameter</th>
                    
<th>Required</th>
                    
<th>Description</th>
                </tr>
                
<tr class="b">
                    
<td align="left">transport.PollInterval</td>
                    
<td>No</td>
                    
<td>The poll interval in seconds.</td>
                </tr>
                
<tr class="a">
                    
<td align="left">transport.mail.Address</td>
                    
<td>Yes</td>
                    
<td>The address used to calculate the endpoint reference for the service. It is assumed that mails
                    sent to this address will be delivered to the mailbox account configured for the service.
                    Note that the transport has no means to validate this value and an incorrect address will not
                    be detected.</td>
                </tr>
                
<tr class="b">
                    
<td align="left">mail.<i>&lt;protocol&gt;</i>.password</td>
                    
<td>Yes</td>
                    
<td>The password for the mailbox account.</td>
                </tr>
                
<tr class="a">
                    
<td align="left">transport.mail.Protocol</td>
                    
<td>Yes</td>
                    
<td>The mail store protocol to be used. The value must be protocol identifier recognized by JavaMail.
                    Usual values are <code>pop3</code> and <code>imap</code>. Note that the SSL variants of these two protocols
                    are not considered as distinct protocols. Rather, SSL is configured using the appropriate JavaMail
                    environment properties.</td>
                </tr>
                
<tr class="b">
                    
<td align="left">transport.mail.ContentType</td>
                    
<td>No</td>
                    
<td>This parameter allows to override the content type of incoming messages. This parameter
                    is useful if the service can only receive messages of a single content type and the client
                    is known to send incorrect content type information. If this parameter is set, the
                    <code>Content-Type</code> MIME header in incoming messages is ignored.</td>
                </tr>
                
<tr class="a">
                    
<td align="left">transport.mail.ReplyAddress</td>
                    
<td>No</td>
                    
<td>The reply-to address to be used when no From or Reply-To header is present in the
                    request message.</td>
                </tr>
                
<tr class="b">
                    
<td align="left">transport.mail.Folder</td>
                    
<td>No</td>
                    
<td>The folder to read messages from. Defaults to <code>INBOX</code>.</td>
                </tr>
                
<tr class="a">
                    
<td align="left">transport.mail.PreserveHeaders, transport.mail.RemoveHeaders</td>
                    
<td>No</td>
                    
<td>These two properties control which MIME headers of the received message will be stored
                    in the <code>TRANSPORT_HEADERS</code> property of the message context. Both parameters expect a
                    comma separated list of header names as value. <code>transport.mail.PreserveHeaders</code> specifies
                    a whitelist of headers to retain, while <code>transport.mail.RemoveHeaders</code> specifies a
                    blacklist of headers to remove. Note that the two parameters should not be used simultaneously.</td>
                </tr>
                
<tr class="b">
                    
<td align="left">transport.mail.ActionAfterProcess</td>
                    
<td>No</td>
                    
<td>Determines what the transport should do with the message after successful processing.
                    Possible values are <code>MOVE</code> and <code>DELETE</code>. The default value is <code>DELETE</code>.</td>
                </tr>
                
<tr class="a">
                    
<td align="left">transport.mail.ActionAfterFailure</td>
                    
<td>No</td>
                    
<td>Determines what the transport should do with the message if processing fails.
                    Possible values are <code>MOVE</code> and <code>DELETE</code>. The default value is <code>DELETE</code>.
                    [FIXME: we should reconsider this; it is dangerous!]</td>
                </tr>
                
<tr class="b">
                    
<td align="left">transport.mail.MoveAfterProcess</td>
                    
<td>Conditional</td>
                    
<td>Specifies the destination folder if <code>transport.mail.ActionAfterProcess</code>
                    is <code>MOVE</code>.</td>
                </tr>
                
<tr class="a">
                    
<td align="left">transport.mail.MoveAfterFailure</td>
                    
<td>Conditional</td>
                    
<td>Specifies the destination folder if <code>transport.mail.ActionAfterFailure</code>
                    is <code>MOVE</code>.</td>
                </tr>
                
<tr class="b">
                    
<td align="left">transport.mail.MaxRetryCount</td>
                    
<td>No</td>
                    
<td>The number of connection attempts. When the maximum number of retries is
                    exceeded, a new poll is scheduled after the normal poll interval.
                    The default value is 0, i.e. connection failures are simply ignored.</td>
                </tr>
                
<tr class="a">
                    
<td align="left">transport.mail.ReconnectTimeout</td>
                    
<td>No</td>
                    
<td>The interval between two connection attempts if the first failed.
                    The default value is 0, i.e. a new connection is attempted immediately.
                    [FIXME: either it is not implemented as intended or the name of the property is misleading; it is not a timeout, but an interval]</td>
                </tr>
            </table>
          </section>
          <section>
<h3><a name="Content_extraction"></a>Content extraction</h3>
            
<p>Content is extracted from incoming mails using the following rules:</p>
            
<ol style="list-style-type: decimal">
                
<li>If the content type of the message is not <code>multipart/mixed</code>, the message is extracted
                    from the body of the message.</li>
                
<li>If the content type of the message is <code>multipart/mixed</code>, the listener will attempt to
                    find a MIME part with a content type different from <code>text/plain</code> and for which a
                    message builder is registered. If a matching part is found, the message will be extracted
                    from that part. Otherwise, the listener will extract the message from
                    the last <code>text/plain</code> part if a message builder is registered for that content type.
                    Finally, if no message builder is registered for any of the content types appearing in the multipart
                    message, an error is triggered.</li>
            </ol>
            
<p>Note that these rules only apply if the content type has not been overridden using the
            <code>transport.mail.ContentType</code> property. If this property is set, the message will always be
            extracted from the body of the message and support for <code>multipart/mixed</code> is disabled.</p>
            
<p>In all cases the transport listener will use the corresponding message builder registered in the
            Axis configuration to build the SOAP infoset from the message.</p>
            
<p>The special rules for <code>multipart/mixed</code> are designed to enable the following use cases:</p>
            
<ul>
                
<li>Allow humans to send messages to a Web service using a standard mail client. The user
                    can do so by adding the message as attachment to the mail. Note that this only works
                    if the mail client correctly sets the <code>Content-Type</code> header on the attachment.
                    This works best for SOAP 1.1 messages: when attaching a file with suffix <code>.xml</code>,
                    most mail clients will set the content type to <code>text/xml</code>, exactly as required
                    for SOAP 1.1.</li>
                
<li>Allow clients to send a human readable message together with the actual message.
                    This is useful if the message may be read by a human before being processed.</li>
            </ul>
            
<p>Note that these rules don't interfere with the support for SOAP with Attachments, because
            SwA uses <code>multipart/related</code>.</p>
          </section>
        </section>
        <section>
<h2><a name="Transport_sender"></a>Transport sender</h2>
            <section>
<h3><a name="Configuration"></a>Configuration</h3>
    
<div>
<pre>    &lt;transportSender name=&quot;mailto&quot; class=&quot;org.apache.synapse.transport.mail.MailTransportSender&quot;&gt;
        &lt;parameter name=&quot;mail.smtp.host&quot;&gt;smtp.gmail.com&lt;/parameter&gt;
        &lt;parameter name=&quot;mail.smtp.port&quot;&gt;587&lt;/parameter&gt;
        &lt;parameter name=&quot;mail.smtp.starttls.enable&quot;&gt;true&lt;/parameter&gt;
        &lt;parameter name=&quot;mail.smtp.auth&quot;&gt;true&lt;/parameter&gt;
        &lt;parameter name=&quot;mail.smtp.user&quot;&gt;synapse.demo.0&lt;/parameter&gt;
        &lt;parameter name=&quot;mail.smtp.password&quot;&gt;mailpassword&lt;/parameter&gt;
        &lt;parameter name=&quot;mail.smtp.from&quot;&gt;synapse.demo.0@gmail.com&lt;/parameter&gt;
    &lt;/transportSender&gt;</pre></div>
            </section>
        </section>
    

        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>Copyright &copy;2004&#x2013;2022
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.</p>
        </div>
        </div>
    </footer>
    </body>
</html>
