Enterprise Integration Zone is brought to you in partnership with:

Software Architect at Chariot Solutions focusing on integration using Java and Open Source technologies. Rod has posted 6 posts at DZone. View Full User Profile

Sending outbound SMTP messages through Gmail with Mule ESB

07.25.2010
| 11232 views |
  • submit to reddit

I'm currently working on a Managed File Transfer (MFT) proof-of-concept for a client using Mule ESB Enterprise.  One of the requirements I had to address is the ability to send SMTP email messages when a particular connector failed, i.e. SFTP connection failed.  I thought to myself, that's a reasonable request and something that is probably straightforward to do in Mule ESB.  Well, if you look at the Mule configuration it is straightforward however, getting to that point using Gmail took some work...so I thought I'd share :)

What you need...

  • Mule ESB (I'm using Mule ESB Enterprise Version: 2.2.5 Build: 16813 along with Mule Management Console support, i.e. mmc-agent-2.2.5.jar) *
  • A test Gmail account
* - if you plan on running the same version I am then there is a patch that needs to be applied to the mmc-agent-2.2.5.jar.  See JIRA issue MULE-4970.

Mule Configuration...
<?xml version="1.0"?>
<mule xmlns="http://www.mulesource.org/schema/mule/core/2.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:file="http://www.mulesource.org/schema/mule/file/2.2"
xmlns:smtp="http://www.mulesource.org/schema/mule/smtp/2.2"
xmlns:email="http://www.mulesource.org/schema/mule/email/2.2"
xsi:schemaLocation="http://www.mulesource.org/schema/mule/core/2.2
http://www.mulesource.org/schema/mule/core/2.2/mule.xsd
http://www.mulesource.org/schema/mule/file/2.2
http://www.mulesource.org/schema/mule/file/2.2/mule-file.xsd
http://www.mulesource.org/schema/mule/smtp/2.2
http://www.mulesource.org/schema/mule/smtp/2.2/mule-smtp.xsd
http://www.mulesource.org/schema/mule/email/2.2
http://www.mulesource.org/schema/mule/email/2.2/mule-email.xsd">

<description>Test configuration to send SMTP email through Gmail.</description>

<!-- Configure some properties to work with GMail's SMTP -->
<smtp:gmail-connector name="emailConnector" />

<model name="processInboundFileModel">
<service name="processInboundFileService">
<inbound>
<file:inbound-endpoint
path="./remoteFS">
</file:inbound-endpoint>
</inbound>

<echo-component/>

<outbound>
<pass-through-router>
<smtp:outbound-endpoint
connector-ref="emailConnector"
host="smtp.gmail.com"
port="587"
user="<account name>%40gmail.com"
password="<password>"
to="<email addresses>"
from="<account name>@gmail.com"
subject="Test email message"/>
</pass-through-router>
</outbound>
</service>
</model>
</mule>


As indicated, the Mule configuration is very straightforward.  You can get most of the information you need from the Mule SMTP Transport documentation except for what Gmail port to use and most importantly the gmail-connector information.  That tripped me up for a while until I came across a Mule JIRA issue where someone refer to the configuration in the bookstore example for sending email through Gmail.  I still haven't found much information on this connector and what it's doing but it does work and you need to use in order to connect to Gmail.
One other thing that is documented however maybe overlooked is that you need to replace the "@" symbol in the "user" attribute with the URL escape code of "%40".
Cheers!

 

From http://soatechlab.blogspot.com/2010/07/sending-outbound-smtp-messages-through.html

Published at DZone with permission of its author, Rod Biresch.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Tags:

Comments

Rehman Khan replied on Sat, 2012/02/25 - 4:01am

Thanks for the Article.
I need your help on one of my requirement.

I have email_requests in a table. I am reading the table rows from jdbc endpoints and sending the email to the users.
Now I want to update the same row with satus lets say if email fails then status of the row as 'ERROR' and if the email goes through, then status as 'COMPLETED'.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.