Spring - Sending E-Mail with MailSender
Sending email using Spring "org.springframework.mail.javamail.JavaMailSenderImpl" class simplifies the process with JavaMail API. Below example will give step by step to send email by using Gmail SMTP server configurations.
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.springframework.samples</groupId> <artifactId>SendingEmail</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <!-- Spring framework --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> <version>2.5.6.SEC03</version> </dependency> <!-- Java Mail API --> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.3</version> </dependency> </dependencies> </project>
email.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="emailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="smtp.gmail.com" /> <property name="port" value="587" /> <property name="username" value="USERNAME" /> <property name="password" value="PASSWORD" /> <property name="javaMailProperties"> <props> <prop key="mail.smtp.auth">true</prop> <prop key="mail.smtp.starttls.enable">true</prop> </props> </property> </bean> <bean id="emailBean" class="com.app.email.Mailer"> <property name="emailSender" ref="emailSender" /> </bean> </beans>
Mailer.java
package com.app.email; import org.springframework.mail.MailSender; import org.springframework.mail.SimpleMailMessage; public class Mailer { private MailSender emailSender; //Setter for emailSender public void setEmailSender(MailSender emailSender) { this.emailSender = emailSender; } //Method to send email public void sendMail(String from, String to, String subject, String msg) { SimpleMailMessage simpleMsg = new SimpleMailMessage(); simpleMsg.setFrom(from); simpleMsg.setTo(to); simpleMsg.setSubject(subject); simpleMsg.setText(msg); //Finally sending email using MailSender emailSender.send(simpleMsg); } }
SendEmail.java
package com.app.email; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class SendEmail { public static void main(String[] args) { String from = "from@gmail.com"; String to = "to@gmail.com"; String subject = "Hello World !"; String msg = "Hello World, How are you ???"; ApplicationContext context = new ClassPathXmlApplicationContext("email.xml"); try { Mailer mailer = (Mailer) context.getBean("emailBean"); mailer.sendMail(from, to, subject, msg); } catch (Exception e) { e.printStackTrace(); } } }