MailTo Transport
The MailTo transport supports sending messages (E-Mail) over SMTP and receiving messages over POP3 or IMAP. This transport implementation is available as a module of the WS-Commons Transports project.
Enabling the transport
The JAR consisting of the MailTo transport implementation is named axis2-transport-mail.jar
and the following sender and receiver classes should be included in WSO2 EI configuration to enable the MailTo transport:
org.apache.axis2.transport.mail.MailTransportSender
org.apache.axis2.transport.mail.MailTransportListener
To enable the MailTo transport sender
- Edit the
<EI_HOME>/conf/axis2/axis2.xml
file and uncomment the MailTo sender as follows:
<transportSender name="mailto" class="org.apache.axis2.transport.mail.MailTransportSender"> <parameter name="mail.smtp.host">smtp.gmail.com</parameter> <parameter name="mail.smtp.port">587</parameter> <parameter name="mail.smtp.starttls.enable">true</parameter> <parameter name="mail.smtp.auth">true</parameter> <parameter name="mail.smtp.user">synapse.demo.0</parameter> <parameter name="mail.smtp.password">mailpassword</parameter> <parameter name="mail.smtp.from">synapse.demo.0@gmail.com</parameter> </transportSender>
Be sure to import the SSL certificate of your SMTP host server (specified by the mail.smtp.host
parameter) to the client trust store of your ESB. The ESB will use the trusted certificates in this client trust store to validate the identity of the SMTP server.
When importing the certificate, be sure to use a certificate alias that is relevant to your server. For example, if you are using Gmail, use 'smtp.gmail.com' as the certificate alias. See the instructions on importing certificates to a keystore.
Note
If you want to use multiple mail boxes to send emails, you can have multiple MailTo senders in the <EI_HOME>/conf/axis2/axis2.xml
file and include the name of the relevant <transportSender>
in the synapse configuration to use a particular mail box.
For example, if you edit the <EI_HOME>/conf/axis2/axis2.xml
file and add the following <transportSender>
:
<transportSender name="mailtoWSO2" class="org.apache.axis2.transport.mail.MailTransportSender"> <parameter name="mail.smtp.host">smtp.gmail.com</parameter> <parameter name="mail.smtp.port">587</parameter> <parameter name="mail.smtp.starttls.enable">true</parameter> <parameter name="mail.smtp.auth">true</parameter> <parameter name="mail.smtp.user">synapse.demo.0</parameter> <parameter name="mail.smtp.password">mailpassword</parameter> <parameter name="mail.smtp.from">synapse.demo.0@gmail.com</parameter> </transportSender>
You can use the mailtoWSO2
mail box by specifying the following in a synapse configuration:
<endpoint> <address uri="mailtoWSO2:user@host"/> </endpoint>
The MailTo transport sender is generally configured globally so that all services can share the same transport sender configuration.
To enable the MailTo transport receiver
- Edit the
<EI_HOME>/conf/axis2/axis2.xml
file and uncomment the MailTo listener as follows:
<transportReceiver name="mailto" class="org.apache.axis2.transport.mail.MailTransportListener"> </transportReceiver>
The MailTo transport receiver should be configured at service level and each service configuration should explicitly state the mail transport receiver configuration. This is required to enable different services to receive mails over different mail accounts and configurations.
Note
You need to provide correct parameters for a valid mail account at the service level.
Service Level Transport Receiver Parameters
The MailTo transport listener implementation can be configured by setting the parameters as described in the JavaMail API documentation. For IMAP related properties, see IMAP Package Summary. For POP3 properties, see POP3 Package Summary. The MailTo transport listener also supports the following transport parameters in addition to the parameters described in the JavaMail API documentation.
In the following transport parameter tables, the literals displayed in italics in the Possible Values column should be considered as fixed literal constant values. Those values can be directly specified in the transport configuration.
Parameter Name | Description | e.g.Required | Possible Values | Default Value |
---|---|---|---|---|
| The mail address from which this service should fetch incoming mails. | Yes | A valid e-mail address | |
transport.mail.bodyWhenAttached | The content for the body of the mail when sending a mail with an attachment. | No | The text you want to appear in the mail body | |
| The mail folder in the server from which the listener should fetch incoming mails. | No | A valid mail folder name (e.g., inbox) | inbox folder if that is available or else the root folder |
| The mail protocol to be used to receive messages. | No | pop3, imap | imap |
| A comma separated list of mail header names that this receiver should preserve in all incoming messages. | No | A comma separated list | |
| A comma separated list of mail header names that this receiver should remove from incoming messages. | No | A comma separated list | |
| Action to perform on the mails after processing them. | No | MOVE, DELETE | DELETE |
| Action to perform on the mails after a failure occurs while processing them. | No | MOVE, DELETE | DELETE |
| Folder to move the mails after processing them. | Required if ActionAfterProcess is MOVE | A valid mail folder name | |
| Folder to move the mails after encountering a failure. | Required if ActionAfterFailure is MOVE | A valid mail folder name | |
| Whether the receiver should process incoming mails in parallel or not. This works only if the mail protocol supports processing incoming mails in parallel. (e.g., IMAP) | No | true, false | false |
| Whether the receiver should poll for multiple messages concurrently. | No | true, false | false |
| Maximum number of retry operations to be performed when fetching incoming mails. | Yes | A positive integer | |
| The reconnect timeout in milliseconds to be used when fetching incoming mails. | Yes | A positive integer |
Global Transport Sender Parameters
For a list of parameters supported by the MailTo transport sender, see SMTP Package Summary. In addition to the parameters described there, the MailTo transport sender supports the following parameters.
Parameter Name | Description | Required | Possible Values | Default Value |
---|---|---|---|---|
| If one or more e-mail addresses need to be specified as BCC addresses for outgoing mails, this parameter can be used. | No | A comma-separated list of e-mail addresses | |
| Format of the outgoing mail. | No | Text, Multipart | Text |
For more information, see