diff --git a/spring-mvc-email/pom.xml b/spring-mvc-email/pom.xml
new file mode 100644
index 0000000000..0ac84f5cc9
--- /dev/null
+++ b/spring-mvc-email/pom.xml
@@ -0,0 +1,142 @@
+
+
+ 4.0.0
+
+ org.baeldung.spring
+ SpringMVCEmail
+ war
+ 1.0
+
+
+
+
+ javax.servlet
+ javax.servlet-api
+ 3.0.1
+ provided
+
+
+
+ javax.servlet
+ jstl
+ 1.2
+
+
+
+
+ org.springframework
+ spring-context
+ 4.2.5.RELEASE
+
+
+
+ org.springframework
+ spring-core
+ 4.2.5.RELEASE
+
+
+
+ org.springframework
+ spring-web
+ 4.2.5.RELEASE
+
+
+
+ org.springframework
+ spring-webmvc
+ 4.2.5.RELEASE
+
+
+
+
+ javax.validation
+ validation-api
+ 1.1.0.Final
+
+
+
+
+ org.hibernate
+ hibernate-validator
+ 5.0.1.Final
+
+
+
+
+ org.springframework.data
+ spring-data-jpa
+ 1.10.1.RELEASE
+
+
+
+
+ org.springframework.security
+ spring-security-web
+ 4.0.4.RELEASE
+
+
+ org.springframework.security
+ spring-security-config
+ 4.0.4.RELEASE
+
+
+
+
+ com.sun.mail
+ javax.mail
+ 1.5.5
+
+
+
+
+ org.springframework.integration
+ spring-integration-mail
+ 4.3.0.RELEASE
+
+
+
+
+ SpringMVCEmail
+
+
+
+
+ org.apache.tomcat.maven
+ tomcat6-maven-plugin
+ 2.2
+
+ http://localhost:8080/manager/text
+ TomcatServer
+ /SpringMVCEmail
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.1
+
+
+ 1.7
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+ 2.4
+
+ src/main/webapp/WEB-INF/web.xml
+
+
+ src/main/resources/META-INF
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-mvc-email/src/main/java/com/baeldung/spring/config/AppConfig.java b/spring-mvc-email/src/main/java/com/baeldung/spring/config/AppConfig.java
new file mode 100644
index 0000000000..2a7caadf23
--- /dev/null
+++ b/spring-mvc-email/src/main/java/com/baeldung/spring/config/AppConfig.java
@@ -0,0 +1,100 @@
+package com.baeldung.spring.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.mail.SimpleMailMessage;
+import org.springframework.mail.javamail.JavaMailSenderImpl;
+import org.springframework.web.servlet.config.annotation.*;
+import org.springframework.web.servlet.view.InternalResourceViewResolver;
+import org.springframework.web.servlet.view.JstlView;
+import org.springframework.web.servlet.view.UrlBasedViewResolver;
+
+import java.util.Properties;
+
+/**
+ * Created with IntelliJ IDEA.
+ * User: Olga
+ */
+@Configuration
+@ComponentScan("com.baeldung.spring")
+@EnableWebMvc //tha same as
+public class AppConfig extends WebMvcConfigurerAdapter {
+ @Override
+ public void addResourceHandlers(ResourceHandlerRegistry registry) {
+ registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
+ }
+
+ @Bean
+ public UrlBasedViewResolver urlBasedViewResolver() {
+ UrlBasedViewResolver resolver = new UrlBasedViewResolver();
+ resolver.setOrder(0);
+ resolver.setPrefix("/WEB-INF/views/");
+ resolver.setSuffix(".jsp");
+ resolver.setCache(false);
+ resolver.setViewClass(JstlView.class);
+ return resolver;
+ }
+
+ @Bean
+ public InternalResourceViewResolver internalResourceViewResolver() {
+ InternalResourceViewResolver resolver = new InternalResourceViewResolver();
+ resolver.setOrder(1);
+ resolver.setPrefix("/WEB-INF/views/");
+ resolver.setSuffix(".jsp");
+ resolver.setViewClass(JstlView.class);
+ return resolver;
+ }
+
+ /* Gmail */
+ @Bean
+ public JavaMailSenderImpl mailSender() {
+ JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
+ mailSender.setHost("smtp.gmail.com");
+ mailSender.setPort(587);
+ mailSender.setUsername("reva.olga");
+ mailSender.setPassword("zakpnejnnoqkehgs");
+ mailSender.setJavaMailProperties(javaMailProperties());
+ return mailSender;
+ }
+
+ private Properties javaMailProperties() {
+ Properties props = new Properties();
+ props.setProperty("mail.smtp.auth", "true");
+ props.setProperty("mail.smtp.starttls.enable", "true");
+ return props;
+ }
+
+ @Bean
+ public SimpleMailMessage templateMessage() {
+ SimpleMailMessage message = new SimpleMailMessage();
+ message.setText("This is automatically generated email,\n" +
+ "Original mail text is included : %s\n" +
+ "\n" +
+ "Sincerely yours,\n" +
+ "Yourcompany.");
+ return message;
+ }
+
+ /*Amazon SES
+ @Bean
+ public JavaMailSenderImpl mailSender() {
+ JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
+ mailSender.setHost("email-smtp.us-west-2.amazonaws.com");
+ mailSender.setUsername("username");
+ mailSender.setPassword("password");
+ mailSender.setJavaMailProperties(javaMailProperties());
+ return mailSender;
+ }
+
+ private Properties javaMailProperties() {
+ Properties props = new Properties();
+ props.setProperty("mail.transport.protocol", "smtps");
+ props.setProperty("mail.smtp.port", "25");
+
+ props.put("mail.smtp.auth", "true");
+ props.put("mail.smtp.starttls.enable", "true");
+ props.put("mail.smtp.starttls.required", "true");
+ return props;
+ }*/
+}
diff --git a/spring-mvc-email/src/main/java/com/baeldung/spring/controllers/HomeController.java b/spring-mvc-email/src/main/java/com/baeldung/spring/controllers/HomeController.java
new file mode 100644
index 0000000000..656e237a9e
--- /dev/null
+++ b/spring-mvc-email/src/main/java/com/baeldung/spring/controllers/HomeController.java
@@ -0,0 +1,19 @@
+package com.baeldung.spring.controllers;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+/**
+ * Created with IntelliJ IDEA.
+ * User: Olga
+ */
+@Controller
+@RequestMapping({"/","/home"})
+public class HomeController {
+
+ @RequestMapping(method = RequestMethod.GET)
+ public String showHomePage() {
+ return "home";
+ }
+}
diff --git a/spring-mvc-email/src/main/java/com/baeldung/spring/controllers/MailController.java b/spring-mvc-email/src/main/java/com/baeldung/spring/controllers/MailController.java
new file mode 100644
index 0000000000..5de722f444
--- /dev/null
+++ b/spring-mvc-email/src/main/java/com/baeldung/spring/controllers/MailController.java
@@ -0,0 +1,44 @@
+package com.baeldung.spring.controllers;
+
+import com.baeldung.spring.mail.MailService;
+import com.baeldung.spring.web.dto.MailObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.mail.SimpleMailMessage;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.Errors;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import javax.validation.Valid;
+
+/**
+ * Created by Olga on 7/20/2016.
+ */
+@Controller
+@RequestMapping("/mail")
+public class MailController {
+ @Autowired
+ public MailService mailService;
+
+ @RequestMapping(value = "/send", method = RequestMethod.GET)
+ public String createMail(Model model) {
+ model.addAttribute("mailObject", new MailObject());
+ return "mail/send";
+ }
+
+ @RequestMapping(value = "/send", method = RequestMethod.POST)
+ public String createMail(Model model,
+ @ModelAttribute("mailObject") @Valid MailObject mailObject,
+ Errors errors) {
+ if(errors.hasErrors()) {
+ return "mail/send";
+ }
+
+ SimpleMailMessage mailMessage = mailService.createSimpleMailMessage(mailObject);
+ mailService.sendMail(mailMessage);
+
+ return "redirect:/home";
+ }
+}
diff --git a/spring-mvc-email/src/main/java/com/baeldung/spring/mail/Application.java b/spring-mvc-email/src/main/java/com/baeldung/spring/mail/Application.java
new file mode 100644
index 0000000000..68f89f778d
--- /dev/null
+++ b/spring-mvc-email/src/main/java/com/baeldung/spring/mail/Application.java
@@ -0,0 +1,20 @@
+package com.baeldung.spring.mail;
+
+import org.springframework.mail.SimpleMailMessage;
+
+/**
+ * Created by Olga on 7/15/2016.
+ */
+public class Application {
+
+ public static void main(String ...args) {
+ MailService mailService = new MailService();
+
+ SimpleMailMessage message = new SimpleMailMessage();
+ message.setFrom("from@test.com");
+ message.setTo("to@test.com");
+ message.setSubject("Test Message");
+
+ mailService.sendMail(message);
+ }
+}
diff --git a/spring-mvc-email/src/main/java/com/baeldung/spring/mail/MailService.java b/spring-mvc-email/src/main/java/com/baeldung/spring/mail/MailService.java
new file mode 100644
index 0000000000..4deab12e0a
--- /dev/null
+++ b/spring-mvc-email/src/main/java/com/baeldung/spring/mail/MailService.java
@@ -0,0 +1,73 @@
+package com.baeldung.spring.mail;
+
+import com.baeldung.spring.web.dto.MailObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.mail.MailException;
+import org.springframework.mail.SimpleMailMessage;
+import org.springframework.mail.javamail.JavaMailSender;
+import org.springframework.mail.javamail.MimeMessageHelper;
+import org.springframework.stereotype.Service;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+import java.io.File;
+
+/**
+ * Created by Olga on 7/15/2016.
+ */
+@Service
+public class MailService {
+ @Autowired
+ public JavaMailSender mailSender;
+
+ public void sendMail(MimeMessage message) {
+ try {
+ mailSender.send(message);
+ } catch (MailException exception) {
+ exception.printStackTrace();
+ }
+ }
+
+ public MimeMessage createMessageWithAttachment(MailObject mailObject) {
+ MimeMessage message = mailSender.createMimeMessage();
+ try {
+ // pass 'true' to the constructor to create a multipart message
+ MimeMessageHelper helper = new MimeMessageHelper(message, true);
+
+ helper.setFrom(mailObject.getFrom());
+ helper.setTo(mailObject.getTo());
+ helper.setSubject(mailObject.getSubject());
+ helper.setText(mailObject.getText());
+
+ // attach a sample image attachment
+ FileSystemResource file = new FileSystemResource(new File("c:/attachment.jpg"));
+ helper.addAttachment("Attachment.jpg", file);
+ } catch (MessagingException e) {
+ e.printStackTrace();
+ }
+ return message;
+ }
+
+ public void sendMail(SimpleMailMessage message) {
+ try {
+ mailSender.send(message);
+ } catch (MailException exception) {
+ exception.printStackTrace();
+ }
+ }
+
+ @Autowired
+ public SimpleMailMessage template;
+
+ public SimpleMailMessage createSimpleMailMessage(MailObject mailObject) {
+ SimpleMailMessage mailMessage = new SimpleMailMessage(template);
+
+ mailMessage.setFrom(mailObject.getFrom());
+ mailMessage.setTo(mailObject.getTo());
+ mailMessage.setSubject(mailObject.getSubject());
+ mailMessage.setText(String.format(template.getText(), mailObject.getText()));
+
+ return mailMessage;
+ }
+}
diff --git a/spring-mvc-email/src/main/java/com/baeldung/spring/web/dto/MailObject.java b/spring-mvc-email/src/main/java/com/baeldung/spring/web/dto/MailObject.java
new file mode 100644
index 0000000000..70975be84c
--- /dev/null
+++ b/spring-mvc-email/src/main/java/com/baeldung/spring/web/dto/MailObject.java
@@ -0,0 +1,50 @@
+package com.baeldung.spring.web.dto;
+
+import org.hibernate.validator.constraints.Email;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * Created by Olga on 7/20/2016.
+ */
+public class MailObject {
+ @Email
+ private String from;
+ @NotNull
+ @Email
+ private String to;
+ private String subject;
+ private String text;
+
+ public String getFrom() {
+ return from;
+ }
+
+ public void setFrom(String from) {
+ this.from = from;
+ }
+
+ public String getTo() {
+ return to;
+ }
+
+ public void setTo(String to) {
+ this.to = to;
+ }
+
+ public String getSubject() {
+ return subject;
+ }
+
+ public void setSubject(String subject) {
+ this.subject = subject;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public void setText(String text) {
+ this.text = text;
+ }
+}
diff --git a/spring-mvc-email/src/main/resources/META-INF/application.xml b/spring-mvc-email/src/main/resources/META-INF/application.xml
new file mode 100644
index 0000000000..f2d901b497
--- /dev/null
+++ b/spring-mvc-email/src/main/resources/META-INF/application.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+ SpringMVCEmail.war
+ SpringMVCEmail
+
+
+
+
+ web.war
+ SpringMVCEmail
+
+
+
\ No newline at end of file
diff --git a/spring-mvc-email/src/main/webapp/WEB-INF/views/home.jsp b/spring-mvc-email/src/main/webapp/WEB-INF/views/home.jsp
new file mode 100644
index 0000000000..74165f2626
--- /dev/null
+++ b/spring-mvc-email/src/main/webapp/WEB-INF/views/home.jsp
@@ -0,0 +1,25 @@
+<%--
+ Created by IntelliJ IDEA.
+ User: Olga
+ Date: 1/19/16
+ Time: 3:53 PM
+ To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+
+ Home Page
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-mvc-email/src/main/webapp/WEB-INF/views/mail/send.jsp b/spring-mvc-email/src/main/webapp/WEB-INF/views/mail/send.jsp
new file mode 100644
index 0000000000..9e9cbc1ff7
--- /dev/null
+++ b/spring-mvc-email/src/main/webapp/WEB-INF/views/mail/send.jsp
@@ -0,0 +1,60 @@
+<%--
+ Created by IntelliJ IDEA.
+ User: Olga
+ Date: 7/20/2016
+ Time: 1:47 PM
+ To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
+
+
+ Send Email
+
+
+
+
Create Email
+
+
+
+
+
+
diff --git a/spring-mvc-email/src/main/webapp/WEB-INF/web.xml b/spring-mvc-email/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000000..5fe46d45d6
--- /dev/null
+++ b/spring-mvc-email/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,28 @@
+
+
+
+
+ simpleweb
+ org.springframework.web.servlet.DispatcherServlet
+
+ contextClass
+
+ org.springframework.web.context.support.AnnotationConfigWebApplicationContext
+
+
+
+ contextConfigLocation
+ com.baeldung.spring.config.AppConfig
+
+ 1
+
+
+
+ simpleweb
+ /
+
+