Gmail Service in Mule ESB

The following example shows how to expose a SOAP service that send a mail using the SMTP outbound and the Gmail connector.

GmailService-config.xml (mule-config.xml file)

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="" xmlns:http=""
	xmlns:cxf="" xmlns:context=""
	xmlns:smtps="" xmlns:smtp=""
	xmlns:spring="" xmlns:core=""
	xmlns:xsi="" version="CE-3.3.0"
	xsi:schemaLocation=" ">
	     The Gmail connector is part of connectors that Mule ESB offers out of the box.
	<smtp:gmail-connector name="emailConnector"
		doc:name="Gmail" />
	     The flows starts here
	<flow name="GMailService-configFlow1" doc:name="GMailService-configFlow1">
	    Configuring the HTTP inbound 
		<http:inbound-endpoint exchange-pattern="request-response"
			address="http://localhost:9094/gmailService" doc:name="HTTP" />
	     In this block the SOAP CXF Service is configured. We need two java classes one is for
	     set up the Simple Front end of the Web Service and the other one is for return the payload
	     to the flow, in this case the mail that we want to send. 
		<cxf:jaxws-service serviceClass=""
			doc:name="IGmailService" enableMuleSoapHeaders="false"/>
		<component class="" doc:name="GMailService" />
		<object-to-string-transformer doc:name="Object to String" />
	     We generate a response for the SOAP Service.
			<set-payload value="Your Message has been sent."
				doc:name="Set Payload" />
		<logger message="******** #[payload]" level="INFO" doc:name="Logger" doc:description="Just for log the message to send"/>
		<echo-component doc:name="Echo" />
	     Setting the outbound 
	     Note that the user has to be set up with an "%40" instead of "@" otherwise the 
	     SMTP outbound wont work, and you'll have to do the same for the password all 
	     the @'s wont wont work.   
		<smtps:outbound-endpoint host="" user=""
			password="THE_PASSWORD" from="" subject="Email from Mule ESB"
			doc:name="Send notification email" to="" />


In resume a simple CXF service is being exposed to send some text through Gmail.

The class is used to return the payload to Mule’s flow.

An Echo component is added to generate the response flow, and a SetPayload Transformer is placed to generate the response text.

The Logger component is useful to keep a track of the message that you want to send.

You have to consider the following things before you test the service:

  • The “user” attribute uses the escape code of “%40” to replace the “@” symbol.
  • As the “user attribute the “password” needs “%40” escape code too every time you want to place an “@”.
  • Note that in “from” and “to” attributes the “@” symbol will work perfectly.

import javax.jws.WebMethod;
import javax.jws.WebService;
public interface IGmailService {
	@WebMethod(operationName = "sendMail")
	public String sendMail(String text);


This will expose a simple CXF service in Mule ESB with a method called “sendMail” that accept a String as input.

public class GmailService implements IGmailService {
	public String sendMail(String text) {
		return text;


This class returns the text that was passed through the Web Service to the Mule’s payload.
You can find the project in Github here.
Here is the source code of the project


  • Mark Casagrande

    Muchas Gracias Marco, for the tip on the %40 escape for the @. I forgot about that important detail when i was using the GMAIL SMTP server!

    R U any related to the Senor Tello on the FC Barcelona squad ?
    Mark Casagrande

    Created:01 Nov ,2013
  • Hola Mark,

    Thanks for the reply, I’m glad to hear that it helped you.

    BTW I’m not related to Tello but I play almost like him (I’m just kidding)

    Adios :)


    Created:19 Nov ,2013
  • Alejandro Ferrara

    Good work Marco! Very well explained.

    Created:27 Feb ,2014
  • can you please explain how to expose a mule flow as a webservice…

    Created:11 Mar ,2014
  • vamsi

    we tried the application but no errors
    gmail service started.we are not getting any mail.

    Created:25 Mar ,2014
  • Hi Lakshmi, I have a tutorial for creating a simple Web Service with Mule here

    Created:28 Apr ,2014
  • Hi Vamsi, do you have the log of the Mule’s flow?, try to start Mule up and call the Web Service, Do you see any exception?

    Created:28 Apr ,2014

Leave a Comment ...

Copyright © 2010 - 2015 Marco Tello.