1 package com.rest;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 import com.utils.BundleMessageReader;
25 import org.springframework.context.i18n.LocaleContextHolder;
26 import org.springframework.mail.javamail.JavaMailSender;
27 import org.springframework.mail.javamail.MimeMessageHelper;
28 import org.thymeleaf.context.Context;
29 import org.thymeleaf.spring3.SpringTemplateEngine;
30 import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
31
32 import javax.mail.MessagingException;
33 import javax.mail.internet.MimeMessage;
34 import java.util.Locale;
35
36
37
38
39 public class EmailSender {
40 public JavaMailSender mailSender;
41
42 public ClassLoaderTemplateResolver emailTemplateResolver;
43
44 public SpringTemplateEngine thymeleaf;
45
46 String sender;
47
48 String recipient;
49
50 private BundleMessageReader bundleMessageReader = new BundleMessageReader();
51
52 public EmailSender(JavaMailSender mailSenderParam,
53 ClassLoaderTemplateResolver emailTemplateResolverParam, SpringTemplateEngine thymeleafParam, String recipientParam, String senderParam){
54 mailSender = mailSenderParam;
55 emailTemplateResolver = emailTemplateResolverParam;
56 thymeleaf = thymeleafParam;
57 if(!thymeleaf.isInitialized()){
58 thymeleaf.setTemplateResolver(emailTemplateResolver);
59 }
60 recipient = recipientParam;
61 sender = senderParam;
62
63 }
64
65 public void sendVerificationTokenEmail(String emailVerificationToken, String requestBaseUrl){
66 Locale locale = LocaleContextHolder.getLocale();
67 String emailVerificationTemplate = "";
68 switch (locale.toString()){
69 case "fr":
70 emailVerificationTemplate = "emailVerificationTemplate_fr";
71 break;
72 default:
73 emailVerificationTemplate = "emailVerificationTemplate_en";
74 break;
75 }
76
77 Context ctx = new Context();
78 ctx.setVariable("emailVerificationToken", emailVerificationToken.toString());
79 ctx.setVariable("requestBaseUrl", requestBaseUrl.toString());
80
81 String emailText = thymeleaf.process(emailVerificationTemplate, ctx);
82
83 try {
84 sendMessage(bundleMessageReader.getMessage("EmailVerificationEmailHeader"), emailText);
85 } catch (MessagingException e) {
86 e.printStackTrace();
87 }
88 }
89
90 public void sendReserPasswordEmail(String resetPasswordToken, String requestBaseUrl){
91 Locale locale = LocaleContextHolder.getLocale();
92 String resetPasswordTemplate = "";
93 switch (locale.toString()){
94 case "fr":
95 resetPasswordTemplate = "resetPasswordTemplate_fr";
96 break;
97 default:
98 resetPasswordTemplate = "resetPasswordTemplate_en";
99 break;
100 }
101
102 Context ctx = new Context();
103 ctx.setVariable("resetPasswordToken", resetPasswordToken.toString());
104 ctx.setVariable("requestBaseUrl", requestBaseUrl.toString());
105
106 String emailText = thymeleaf.process(resetPasswordTemplate, ctx);
107
108 try {
109 sendMessage(bundleMessageReader.getMessage("ResetPasswordEmailHeader"), emailText);
110 } catch (MessagingException e) {
111 e.printStackTrace();
112 }
113 }
114
115 private void sendMessage(String emailHeader, String emailText) throws MessagingException{
116 MimeMessage message = mailSender.createMimeMessage();
117 MimeMessageHelper helper = new MimeMessageHelper(message, true);
118 helper.setFrom(sender);
119 helper.setTo(recipient);
120 helper.setSubject(emailHeader);
121 helper.setText(emailText, true );
122 mailSender.send(message);
123 }
124 }