Over a million developers have joined DZone.

Gmail Service In Mule ESB

DZone's Guide to

Gmail Service In Mule ESB

· ·
Free Resource

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="http://www.mulesoft.org/schema/mule/core" xmlns:http="http://www.mulesoft.org/schema/mule/http"
	xmlns:cxf="http://www.mulesoft.org/schema/mule/cxf" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:smtps="http://www.mulesoft.org/schema/mule/smtps" xmlns:smtp="http://www.mulesoft.org/schema/mule/smtp"
	xmlns:spring="http://www.springframework.org/schema/beans" xmlns:core="http://www.mulesoft.org/schema/mule/core"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="CE-3.3.0"
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd 
http://www.mulesoft.org/schema/mule/cxf http://www.mulesoft.org/schema/mule/cxf/current/mule-cxf.xsd 
http://www.mulesoft.org/schema/mule/smtps http://www.mulesoft.org/schema/mule/smtps/current/mule-smtps.xsd 
http://www.mulesoft.org/schema/mule/smtp http://www.mulesoft.org/schema/mule/smtp/current/mule-smtp.xsd 
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd 
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-current.xsd ">
	     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="com.marco.tello.gmail.service.IGmailService"
			doc:name="IGmailService" enableMuleSoapHeaders="false"/>
		<component class="com.marco.tello.gmail.service.GmailService" 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="smtp.gmail.com" user="your_address%40gmail.com"
			password="THE_PASSWORD" from="your_gmail_user@gmail.com" subject="Email from Mule ESB"
			doc:name="Send notification email" to="your_address@some_domain.com" />

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

The GmailService.java 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.


package com.marco.tello.gmail.service;
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.


package com.marco.tello.gmail.service;
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 .

From: http://marcotello.com/mule-esb/gmail-service-in-mule-esb/ 


Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}