Home » Enterprise Java » spring » Mail » Sending e-mails with Spring

About Ilias Tsagklis

Ilias Tsagklis
Ilias is a software developer turned online entrepreneur. He is co-founder and Executive Editor at Java Code Geeks.

Sending e-mails with Spring

We will create a simple Spring service that will be used for sending mail. One method will create a SimpleMailMessage on the spot, while the other will use a preconfigured default message. The source code for the service is the following:

package com.javacodegeeks.spring.mail;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.stereotype.Service;
 
@Service("mailService")
public class MailService {
    
    @Autowired
    private MailSender mailSender;
    @Autowired
    private SimpleMailMessage alertMailMessage;
    
    public void sendMail(String from, String to, String subject, String body) {

  

  SimpleMailMessage message = new SimpleMailMessage();

   

  message.setFrom(from);

  message.setTo(to);

  message.setSubject(subject);

  message.setText(body);

  mailSender.send(message);

  
    }
    
    public void sendAlertMail(String alert) {

  

  SimpleMailMessage mailMessage = new SimpleMailMessage(alertMailMessage);

  mailMessage.setText(alert);

  mailSender.send(mailMessage);

  
    }
    
}


The corresponding Spring XML file that bootstraps the container is the following:

<?xml version="1.0" encoding="UTF-8"?>
 
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jee="http://www.springframework.org/schema/jee" 
    xmlns:task="http://www.springframework.org/schema/task"
    xsi:schemaLocation="


http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd


http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd


http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd


http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd


http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd


http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"
>
 
    <context:component-scan base-package="com.javacodegeeks.spring.mail" />    
    
    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">

  <property name="host" value="smtp.gmail.com"/>

  <property name="port" value="25"/>

  <property name="username" value="myusername@gmail.com"/>

  <property name="password" value="mypassword"/>

  <property name="javaMailProperties">


<props>


    <!-- Use SMTP transport protocol -->


    <prop key="mail.transport.protocol">smtp</prop>


    <!-- Use SMTP-AUTH to authenticate to SMTP server -->


    <prop key="mail.smtp.auth">true</prop>


    <!-- Use TLS to encrypt communication with SMTP server -->


    <prop key="mail.smtp.starttls.enable">true</prop>


    <prop key="mail.debug">true</prop>


</props>

  </property>
    </bean>
    
    <bean id="alertMailMessage" class="org.springframework.mail.SimpleMailMessage">

  <property name="from">




<value>myusername@gmail.com</value>

  </property>

  <property name="to">




<value>myusername@gmail.com</value>

  </property>

  <property name="subject" value="Alert - Exception occurred. Please investigate"/>
    </bean>
    
</beans>

In case you wish to use Gmail’s SMTP server, make sure that the following JavaMail properties are configured appropriately:

host=smtp.gmail.com
port=25
username=your-gmail-username
password=your-gmail-password
mail.transport.protocol=smtp
mail.smtp.auth=true
mail.smtp.starttls.enable=true


Finally, we create a class that will be used to create the Spring container and test the simple mail service we created. The source code is the following:

package com.javacodegeeks.spring.mail;
 
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
 
public class MailServiceTest {
 
    public static void main(String[] args) {

  

  ApplicationContext context = new FileSystemXmlApplicationContext("conf/spring.xml");
 

  MailService mailService = (MailService) context.getBean("mailService");

  

  mailService.sendMail("myusername@gmail.com", "myusername@gmail.com", "Testing123", "Testing only nn Hello Spring Email Sender");

  

  mailService.sendAlertMail("Exception occurred");

  
    }
    
}

Related Article:

0 0 vote
Article Rating

Do you want to know how to develop your skillset to become a Java Rockstar?

Subscribe to our newsletter to start Rocking right now!

To get you started we give you our best selling eBooks for FREE!

 

1. JPA Mini Book

2. JVM Troubleshooting Guide

3. JUnit Tutorial for Unit Testing

4. Java Annotations Tutorial

5. Java Interview Questions

6. Spring Interview Questions

7. Android UI Design

 

and many more ....

 

Receive Java & Developer job alerts in your Area

 

Subscribe
Notify of
guest
The comment form collects your name, email and content to allow us keep track of the comments placed on the website. Please read and accept our website Terms and Privacy Policy to post a comment.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x