<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia Site Renderer 1.3 at Jun 28, 2015 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Apache Axis2 - 
        Mail transport</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 name="Date-Revision-yyyymmdd" content="20150628" />
    <meta http-equiv="Content-Language" content="en" />
        
        </head>
  <body class="composite">
    <div id="banner">
                        <a href="http://www.apache.org/" id="bannerLeft">
                                        <img src="http://www.apache.org/images/asf_logo_wide.png" alt="Apache Axis2" />
                </a>
                                            <a href=".././" id="bannerRight">
                                                <img src="../images/axis.jpg" alt="Apache Axis2" />
                </a>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
            
            
                <div class="xleft">
        <span id="publishDate">Last Published: 2015-06-28</span>
                  &nbsp;| <span id="projectVersion">Version: 1.6.3</span>
                      </div>
            <div class="xright">                    <a href="../index.html" title="Axis2/Java">Axis2/Java</a>
            |
                        <a href="http://www.apache.org" class="externalLink" title="Apache">Apache</a>
              
            
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
             
            
                                <h5>Axis2/Java</h5>
                  <ul>
                  <li class="none">
                          <a href="../index.html" title="Home">Home</a>
            </li>
          </ul>
                       <h5>Downloads</h5>
                  <ul>
                  <li class="none">
                          <a href="../download.cgi" title="Releases">Releases</a>
            </li>
                  <li class="none">
                          <a href="../modules/index.html" title="Modules">Modules</a>
            </li>
                  <li class="none">
                          <a href="../tools/index.html" title="Tools">Tools</a>
            </li>
          </ul>
                       <h5>Documentation</h5>
                  <ul>
                  <li class="none">
                          <a href="../docs/toc.html" title="Table of Contents">Table of Contents</a>
            </li>
                  <li class="none">
                          <a href="../docs/installationguide.html" title="Installation Guide">Installation Guide</a>
            </li>
                  <li class="none">
                          <a href="../docs/quickstartguide.html" title="QuickStart Guide">QuickStart Guide</a>
            </li>
                  <li class="none">
                          <a href="../docs/userguide.html" title="User Guide">User Guide</a>
            </li>
                  <li class="none">
                          <a href="../docs/jaxws-guide.html" title="JAXWS Guide">JAXWS Guide</a>
            </li>
                  <li class="none">
                          <a href="../docs/pojoguide.html" title="POJO Guide">POJO Guide</a>
            </li>
                  <li class="none">
                          <a href="../docs/spring.html" title="Spring Guide">Spring Guide</a>
            </li>
                  <li class="none">
                          <a href="../docs/webadminguide.html" title="Web Administrator's Guide">Web Administrator's Guide</a>
            </li>
                  <li class="none">
                          <a href="../docs/migration.html" title="Migration Guide (from Axis1)">Migration Guide (from Axis1)</a>
            </li>
          </ul>
                       <h5>Resources</h5>
                  <ul>
                  <li class="none">
                          <a href="../faq.html" title="FAQ">FAQ</a>
            </li>
                  <li class="none">
                          <a href="../articles.html" title="Articles">Articles</a>
            </li>
                  <li class="none">
                          <a href="http://wiki.apache.org/ws/FrontPage/Axis2/" class="externalLink" title="Wiki">Wiki</a>
            </li>
                  <li class="none">
                          <a href="../refLib.html" title="Reference Library">Reference Library</a>
            </li>
                  <li class="none">
                          <a href="../api/index.html" title="Online Java Docs">Online Java Docs</a>
            </li>
          </ul>
                       <h5>Get Involved</h5>
                  <ul>
                  <li class="none">
                          <a href="../overview.html" title="Overview">Overview</a>
            </li>
                  <li class="none">
                          <a href="../svn.html" title="Checkout the Source">Checkout the Source</a>
            </li>
                  <li class="none">
                          <a href="../mail-lists.html" title="Mailing Lists">Mailing Lists</a>
            </li>
                  <li class="none">
                          <a href="../release-process.html" title="Release Process">Release Process</a>
            </li>
                  <li class="none">
                          <a href="../guidelines.html" title="Developer Guidelines">Developer Guidelines</a>
            </li>
                  <li class="none">
                          <a href="../siteHowTo.html" title="Build the Site">Build the Site</a>
            </li>
          </ul>
                       <h5>Project Information</h5>
                  <ul>
                  <li class="none">
                          <a href="../team-list.html" title="Project Team">Project Team</a>
            </li>
                  <li class="none">
                          <a href="../issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
            </li>
                  <li class="none">
                          <a href="http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/" class="externalLink" title="Source Code">Source Code</a>
            </li>
                  <li class="none">
                          <a href="../thanks.html" title="Acknowledgements">Acknowledgements</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="externalLink" title="License">License</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship">Sponsorship</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks">Thanks</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/security/" class="externalLink" title="Security">Security</a>
            </li>
          </ul>
                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="poweredBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
      </a>
                   
            
            </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <!-- ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements. See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership. The ASF licenses this file
  ~ to you 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. -->
    
        <div class="section"><h2>Introduction<a name="Introduction"></a></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>
        </div>
        <div class="section"><h2>Transport listener<a name="Transport_listener"></a></h2>
          <div class="section"><h3>Configuration<a name="Configuration"></a></h3>
            <div><pre>    &lt;transportReceiver name=&quot;mailto&quot; class=&quot;org.apache.axis2.transport.mail.MailTransportListener&quot;/&gt;</pre></div>
          </div>
          <div class="section"><h3>Endpoint configuration<a name="Endpoint_configuration"></a></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 <tt>transportReceiver</tt> element in <tt>axis2.xml</tt>.</p>
            <p>All parameters starting with <tt>mail.</tt> are
            interpreted as JavaMail environment properties. The most relevant are <tt>mail.<i>&lt;protocol&gt;</i>.host</tt>
            and <tt>mail.<i>&lt;protocol&gt;</i>.user</tt>, where <tt><i>&lt;protocol&gt;</i></tt> is typically <tt>pop3</tt>
            or <tt>imap</tt>. 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="bodyTable">
                <tr class="a">
                    <th>Parameter</th>
                    <th>Required</th>
                    <th>Description</th>
                </tr>
                <tr class="b">
                    <td>transport.PollInterval</td>
                    <td>No</td>
                    <td>The poll interval in seconds.</td>
                </tr>
                <tr class="a">
                    <td>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>mail.<i>&lt;protocol&gt;</i>.password</td>
                    <td>Yes</td>
                    <td>The password for the mailbox account.</td>
                </tr>
                <tr class="a">
                    <td>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 <tt>pop3</tt> and <tt>imap</tt>. 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>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
                    <tt>Content-Type</tt> MIME header in incoming messages is ignored.</td>
                </tr>
                <tr class="a">
                    <td>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>transport.mail.Folder</td>
                    <td>No</td>
                    <td>The folder to read messages from. Defaults to <tt>INBOX</tt>.</td>
                </tr>
                <tr class="a">
                    <td>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 <tt>TRANSPORT_HEADERS</tt> property of the message context. Both parameters expect a
                    comma separated list of header names as value. <tt>transport.mail.PreserveHeaders</tt> specifies
                    a whitelist of headers to retain, while <tt>transport.mail.RemoveHeaders</tt> specifies a
                    blacklist of headers to remove. Note that the two parameters should not be used simultaneously.</td>
                </tr>
                <tr class="b">
                    <td>transport.mail.ActionAfterProcess</td>
                    <td>No</td>
                    <td>Determines what the transport should do with the message after successful processing.
                    Possible values are <tt>MOVE</tt> and <tt>DELETE</tt>. The default value is <tt>DELETE</tt>.</td>
                </tr>
                <tr class="a">
                    <td>transport.mail.ActionAfterFailure</td>
                    <td>No</td>
                    <td>Determines what the transport should do with the message if processing fails.
                    Possible values are <tt>MOVE</tt> and <tt>DELETE</tt>. The default value is <tt>DELETE</tt>.
                    [FIXME: we should reconsider this; it is dangerous!]</td>
                </tr>
                <tr class="b">
                    <td>transport.mail.MoveAfterProcess</td>
                    <td>Conditional</td>
                    <td>Specifies the destination folder if <tt>transport.mail.ActionAfterProcess</tt>
                    is <tt>MOVE</tt>.</td>
                </tr>
                <tr class="a">
                    <td>transport.mail.MoveAfterFailure</td>
                    <td>Conditional</td>
                    <td>Specifies the destination folder if <tt>transport.mail.ActionAfterFailure</tt>
                    is <tt>MOVE</tt>.</td>
                </tr>
                <tr class="b">
                    <td>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>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>
          </div>
          <div class="section"><h3>Content extraction<a name="Content_extraction"></a></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 <tt>multipart/mixed</tt>, the message is extracted
                    from the body of the message.</li>
                <li>If the content type of the message is <tt>multipart/mixed</tt>, the listener will attempt to
                    find a MIME part with a content type different from <tt>text/plain</tt> 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 <tt>text/plain</tt> 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
            <tt>transport.mail.ContentType</tt> property. If this property is set, the message will always be
            extracted from the body of the message and support for <tt>multipart/mixed</tt> 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 <tt>multipart/mixed</tt> 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 <tt>Content-Type</tt> header on the attachment.
                    This works best for SOAP 1.1 messages: when attaching a file with suffix <tt>.xml</tt>,
                    most mail clients will set the content type to <tt>text/xml</tt>, 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 <tt>multipart/related</tt>.</p>
          </div>
        </div>
        <div class="section"><h2>Transport sender<a name="Transport_sender"></a></h2>
            <div class="section"><h3>Configuration<a name="Configuration"></a></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>
            </div>
        </div>
    

      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">
              Copyright &#169;                    2004-2015
                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
            All Rights Reserved.      
            
                  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
