How to Send and Recieve Emails from WSO2 ESB

How to Send an Email From WSO2 ESB

Lakshani Gamage
2 min readDec 17, 2018
  1. Configure email transport in <ESB_HOME>/repository/conf/axis2/axis2.xml/axis2.xml (There is transportsender commented out in default axis2.xml. You can uncomment them and change the parameter values as you wanted.)
<transportsender class="org.apache.axis2.transport.mail.MailTransportSender" name="mailto">  
<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">sender</parameter>
<parameter name="mail.smtp.password">password</parameter>
<parameter name="mail.smtp.from">sender@gmail.com</parameter>
</transportsender>

2. If ESB has already started, restart the server.

3. Log in to Management console and add below proxy.

<?xml version="1.0" encoding="UTF-8"?>  
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="EmailSender"
startOnLoad="true"
statistics="disable"
trace="disable"
transports="https,http">
<target>
<inSequence>
<log/>
<send>
<endpoint>
<address uri="http://www.mocky.io/v2/57cef5e5260000ab0564fefa"/>
</endpoint>
</send>
<property name="messageType"
scope="axis2"
type="STRING"
value="text/html"/>
<property name="ContentType" scope="axis2" value="text/html"/>
<property name="Subject" scope="transport" value="ESB"/>
<property name="OUT_ONLY" value="true"/>
<property name="FORCE_SC_ACCEPTED" scope="axis2" value="true"/>
<send>
<endpoint>
<address uri="mailto:reciever@gmail.com"/>
</endpoint>
</send>
</inSequence>
<outSequence/>
</target>
<description/>
</proxy>

4. Invoke the proxy and then you can see a mail in reciever@gmail.com's inbox from sender@gmail.com

How to Receive Emails to WSO2 ESB

  1. Uncomment below line in <ESB_HOME>/repository/conf/axis2/axis2.xml/axis2.xml to enable Email transport listener.
<transportReceiver name="mailto" class="org.apache.axis2.transport.mail.MailTransportListener">

2. Restart WSO2 ESB if has already started.

3. Log in to Management console and add below proxy.

<?xml version="1.0" encoding="UTF-8"?>  
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="EmailReciever"
startOnLoad="true"
statistics="disable"
trace="disable"
transports="mailto">
<target>
<inSequence>
<log level="custom">
<property expression="$trp:Subject" name="Subject"/>
</log>
<drop/>
</inSequence>
<outSequence>
<send/>
</outSequence>
</target>
<parameter name="transport.PollInterval">5</parameter>
<parameter name="mail.pop3.host">pop.gmail.com</parameter>
<parameter name="mail.pop3.password">wso2pass</parameter>
<parameter name="mail.pop3.user">wso2user</parameter>
<parameter name="mail.pop3.socketFactory.port">995</parameter>
<parameter name="transport.mail.ContentType">text/plain</parameter>
<parameter name="mail.pop3.port">995</parameter>
<parameter name="mail.pop3.socketFactory.fallback">false</parameter>
<parameter name="transport.mail.Address">wso2user@gmail.com</parameter>
<parameter name="transport.mail.Protocol">pop3</parameter>
<parameter name="mail.pop3.socketFactory.class">javax.net.ssl.SSLSocketFactory</parameter>
<description/>
</proxy>

4. Send email to wso2user@gmail.com. You can see the email receiving to ESB from the logs.

Note : If you are using gmail to receive/send emails, you have to allow external apps access in your google account as mention in here.

--

--

Lakshani Gamage
Lakshani Gamage

Written by Lakshani Gamage

I am Lakshani Gamage, a post graduate from the University of Colombo, School of Computer. I’m working as a Senior Software Engineer at Mitra Innovation.

No responses yet