diff --git a/spring-mvc-email/pom.xml b/spring-mvc-email/pom.xml
index 6b2ef0bf9b..0d3acec1fe 100644
--- a/spring-mvc-email/pom.xml
+++ b/spring-mvc-email/pom.xml
@@ -5,7 +5,7 @@
org.baeldung.spring
SpringMVCEmail
- 1.0-SNAPSHOT
+ 1.0
war
@@ -20,51 +20,23 @@
org.springframework.boot
spring-boot-starter-web
+
org.springframework.boot
spring-boot-starter-mail
1.4.0.RELEASE
+
- org.springframework.boot
- spring-boot-starter-tomcat
- provided
-
-
-
-
-
@@ -80,17 +52,4 @@
-
-
-
- spring-releases
- https://repo.spring.io/libs-release
-
-
-
-
- spring-releases
- https://repo.spring.io/libs-release
-
-
diff --git a/spring-mvc-email/src/main/java/com/baeldung/spring/Application.java b/spring-mvc-email/src/main/java/com/baeldung/spring/Application.java
index 0ab568e111..769658fdde 100644
--- a/spring-mvc-email/src/main/java/com/baeldung/spring/Application.java
+++ b/spring-mvc-email/src/main/java/com/baeldung/spring/Application.java
@@ -1,9 +1,14 @@
package com.baeldung.spring;
+import com.baeldung.spring.mail.EmailService;
import com.baeldung.spring.mail.EmailServiceImpl;
+import com.baeldung.spring.mail.Order;
+import com.baeldung.spring.mail.OrderManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.support.SpringBootServletInitializer;
+import org.springframework.context.annotation.ImportResource;
import org.springframework.mail.SimpleMailMessage;
import javax.annotation.PostConstruct;
@@ -12,24 +17,18 @@ import javax.annotation.PostConstruct;
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
-
}
@Autowired
- public EmailServiceImpl emailService;
+ public EmailService emailService;
+
+ @Autowired
+ public OrderManager orderManager;
@PostConstruct
public void postConstruct() {
- sendSimpleEmail();
- }
-
- private void sendSimpleEmail() {
-
- SimpleMailMessage message = new SimpleMailMessage();
- message.setFrom("from@test.com");
- message.setTo("to@test.com");
- message.setSubject("Test Message");
-
- emailService.sendMail(message);
+ //emailService.sendSimpleMessage("to@gmail.com", "Test Subject", "Test Message");
+ Order order = new Order("reva.olga@gmail.com", "First Name", "Last Name");
+ orderManager.placeOrder(order);
}
}
diff --git a/spring-mvc-email/src/main/java/com/baeldung/spring/app/config/AppConfig.java b/spring-mvc-email/src/main/java/com/baeldung/spring/app/config/AppConfig.java
index 4dcf9c1b7d..0c1662a36c 100644
--- a/spring-mvc-email/src/main/java/com/baeldung/spring/app/config/AppConfig.java
+++ b/spring-mvc-email/src/main/java/com/baeldung/spring/app/config/AppConfig.java
@@ -1,6 +1,8 @@
package com.baeldung.spring.app.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.web.servlet.config.annotation.*;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@@ -11,9 +13,9 @@ import org.springframework.web.servlet.view.UrlBasedViewResolver;
* Created with IntelliJ IDEA.
* User: Olga
*/
-//@Configuration
-//@ComponentScan("com.baeldung.spring")
-//@EnableWebMvc //tha same as
+@Configuration
+@ComponentScan("com.baeldung.spring")
+@EnableWebMvc //tha same as
public class AppConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
@@ -41,6 +43,16 @@ public class AppConfig extends WebMvcConfigurerAdapter {
return resolver;
}
+ @Bean
+ public SimpleMailMessage templateMessage() {
+ SimpleMailMessage message = new SimpleMailMessage();
+ message.setText("Dear %s %s, \nthank you for placing order.\n" +
+ "\n" +
+ "Sincerely yours,\n" +
+ "Yourcompany.");
+ return message;
+ }
+
/* Gmail */
/*@Bean
public JavaMailSenderImpl mailSender() {
@@ -60,17 +72,6 @@ public class AppConfig extends WebMvcConfigurerAdapter {
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() {
diff --git a/spring-mvc-email/src/main/java/com/baeldung/spring/application.properties b/spring-mvc-email/src/main/java/com/baeldung/spring/application.properties
deleted file mode 100644
index 573f901152..0000000000
--- a/spring-mvc-email/src/main/java/com/baeldung/spring/application.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-spring.mail.host=smtp.gmail.com
-spring.mail.port=25
-spring.mail.username=test
-spring.mail.password=test
\ No newline at end of file
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
index 234593f02e..50643684d1 100644
--- 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
@@ -10,12 +10,12 @@ import org.springframework.web.servlet.ModelAndView;
* Created with IntelliJ IDEA.
* User: Olga
*/
-@RestController
+@Controller
@RequestMapping({"/","/home"})
public class HomeController {
@RequestMapping(method = RequestMethod.GET)
- public ModelAndView showHomePage() {
- return new ModelAndView("home");
+ 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
index 90f628f586..79152797ff 100644
--- 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
@@ -1,7 +1,17 @@
package com.baeldung.spring.controllers;
+import com.baeldung.spring.mail.EmailServiceImpl;
+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.
@@ -9,8 +19,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/mail")
public class MailController {
- /*@Autowired
- public EMailService mailService;
+ @Autowired
+ public EmailServiceImpl emailService;
@RequestMapping(value = "/send", method = RequestMethod.GET)
public String createMail(Model model) {
@@ -22,13 +32,8 @@ public class MailController {
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);
+ emailService.sendSimpleMessage("to@gmail.com", "Test Subject", "Test Message");
return "redirect:/home";
- }*/
+ }
}
diff --git a/spring-mvc-email/src/main/java/com/baeldung/spring/mail/EmailService.java b/spring-mvc-email/src/main/java/com/baeldung/spring/mail/EmailService.java
new file mode 100644
index 0000000000..43d7378227
--- /dev/null
+++ b/spring-mvc-email/src/main/java/com/baeldung/spring/mail/EmailService.java
@@ -0,0 +1,20 @@
+package com.baeldung.spring.mail;
+
+import org.springframework.mail.SimpleMailMessage;
+
+/**
+ * Created by Olga on 8/22/2016.
+ */
+public interface EmailService {
+ void sendSimpleMessage(String to,
+ String subject,
+ String text);
+ void sendSimpleMessageUsingTemplate(String to,
+ String subject,
+ SimpleMailMessage template,
+ String ...templateArgs);
+ void sendMessageWithAttachment(String to,
+ String subject,
+ String text,
+ String pathToAttachment);
+}
diff --git a/spring-mvc-email/src/main/java/com/baeldung/spring/mail/EmailServiceImpl.java b/spring-mvc-email/src/main/java/com/baeldung/spring/mail/EmailServiceImpl.java
index bba646afcc..a6bcb00943 100644
--- a/spring-mvc-email/src/main/java/com/baeldung/spring/mail/EmailServiceImpl.java
+++ b/spring-mvc-email/src/main/java/com/baeldung/spring/mail/EmailServiceImpl.java
@@ -19,12 +19,57 @@ import java.io.File;
* Created by Olga on 7/15/2016.
*/
@Component
-@ConditionalOnClass(JavaMailSender.class)
-public class EmailServiceImpl {
+public class EmailServiceImpl implements EmailService {
@Autowired
public JavaMailSender emailSender;
+ public void sendSimpleMessage(String to, String subject, String text) {
+ try {
+ SimpleMailMessage message = new SimpleMailMessage();
+
+ message.setTo(to);
+ message.setSubject(subject);
+ message.setText(text);
+
+ emailSender.send(message);
+ } catch (MailException exception) {
+ exception.printStackTrace();
+ }
+ }
+
+ @Override
+ public void sendSimpleMessageUsingTemplate(String to,
+ String subject,
+ SimpleMailMessage template,
+ String ...templateArgs) {
+ String text = String.format(template.getText(), templateArgs);
+ sendSimpleMessage(to, subject, text);
+ }
+
+ @Override
+ public void sendMessageWithAttachment(String to,
+ String subject,
+ String text,
+ String pathToAttachment) {
+ try {
+ MimeMessage message = emailSender.createMimeMessage();
+ // pass 'true' to the constructor to create a multipart message
+ MimeMessageHelper helper = new MimeMessageHelper(message, true);
+
+ helper.setTo(to);
+ helper.setSubject(subject);
+ helper.setText(text);
+
+ FileSystemResource file = new FileSystemResource(new File(pathToAttachment));
+ helper.addAttachment("Invoice", file);
+
+ emailSender.send(message);
+ } catch (MessagingException e) {
+ e.printStackTrace();
+ }
+ }
+
/*public void sendMail(MimeMessage message) {
try {
emailSender.send(message);
@@ -53,14 +98,6 @@ public class EmailServiceImpl {
return message;
}*/
- public void sendMail(SimpleMailMessage message) {
- try {
- emailSender.send(message);
- } catch (MailException exception) {
- exception.printStackTrace();
- }
- }
-
/*@Autowired
public SimpleMailMessage template;
diff --git a/spring-mvc-email/src/main/java/com/baeldung/spring/mail/Order.java b/spring-mvc-email/src/main/java/com/baeldung/spring/mail/Order.java
new file mode 100644
index 0000000000..cd1448b84b
--- /dev/null
+++ b/spring-mvc-email/src/main/java/com/baeldung/spring/mail/Order.java
@@ -0,0 +1,43 @@
+package com.baeldung.spring.mail;
+
+/**
+ * Created by Olga on 8/22/2016.
+ */
+public class Order {
+
+ public Order(String customerEmail,
+ String customerFirstName,
+ String customerLastName) {
+ this.customerEmail = customerEmail;
+ this.customerFirstName = customerFirstName;
+ this.customerLastName = customerLastName;
+ }
+
+ private String customerEmail;
+ private String customerFirstName;
+ private String customerLastName;
+
+ public String getCustomerEmail() {
+ return customerEmail;
+ }
+
+ public void setCustomerEmail(String customerEmail) {
+ this.customerEmail = customerEmail;
+ }
+
+ public String getCustomerFirstName() {
+ return customerFirstName;
+ }
+
+ public void setCustomerFirstName(String customerFirstName) {
+ this.customerFirstName = customerFirstName;
+ }
+
+ public String getCustomerLastName() {
+ return customerLastName;
+ }
+
+ public void setCustomerLastName(String customerLastName) {
+ this.customerLastName = customerLastName;
+ }
+}
diff --git a/spring-mvc-email/src/main/java/com/baeldung/spring/mail/OrderManager.java b/spring-mvc-email/src/main/java/com/baeldung/spring/mail/OrderManager.java
new file mode 100644
index 0000000000..23f6184c8a
--- /dev/null
+++ b/spring-mvc-email/src/main/java/com/baeldung/spring/mail/OrderManager.java
@@ -0,0 +1,29 @@
+package com.baeldung.spring.mail;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.mail.SimpleMailMessage;
+import org.springframework.stereotype.Component;
+
+/**
+ * Created by Olga on 8/22/2016.
+ */
+@Component
+public class OrderManager {
+ @Autowired
+ public EmailService emailService;
+
+ @Value("${attachment.invoice}")
+ private String invoiceAttachmentPath;
+
+ @Autowired
+ public SimpleMailMessage template;
+
+ public void placeOrder(Order order) {
+ emailService.sendSimpleMessageUsingTemplate(order.getCustomerEmail(),
+ "Order Confirmation",
+ template,
+ order.getCustomerFirstName(),
+ order.getCustomerLastName());
+ }
+}
diff --git a/spring-mvc-email/src/main/resources/application.properties b/spring-mvc-email/src/main/resources/application.properties
new file mode 100644
index 0000000000..07ded8f46b
--- /dev/null
+++ b/spring-mvc-email/src/main/resources/application.properties
@@ -0,0 +1,20 @@
+# Gmail SMTP
+spring.mail.host=smtp.gmail.com
+spring.mail.port=587
+spring.mail.username=reva.olga@gmail.com
+spring.mail.password=yubtqniqehrimqyf
+spring.mail.properties.mail.smtp.auth=true
+spring.mail.properties.mail.smtp.starttls.enable=true
+
+# Amazon SES SMTP
+#spring.mail.host=email-smtp.us-west-2.amazonaws.com
+#spring.mail.username=username
+#spring.mail.password=password
+#spring.mail.properties.mail.transport.protocol=smtp
+#spring.mail.properties.mail.smtp.port=25
+#spring.mail.properties.mail.smtp.auth=true
+#spring.mail.properties.mail.smtp.starttls.enable=true
+#spring.mail.properties.mail.smtp.starttls.required=true
+
+# path to attachment file
+attachment.invoice=c:/invoice.jpg
\ No newline at end of file
diff --git a/spring-mvc-email/src/main/webapp/WEB-INF/web.xml b/spring-mvc-email/src/main/webapp/WEB-INF/web.xml
index b979e00276..cbc1bee20a 100644
--- a/spring-mvc-email/src/main/webapp/WEB-INF/web.xml
+++ b/spring-mvc-email/src/main/webapp/WEB-INF/web.xml
@@ -8,7 +8,7 @@
simpleweb
org.springframework.web.servlet.DispatcherServlet
-
+
1
@@ -26,7 +26,7 @@
/
-
+