View Javadoc
1   package com.rest;
2   
3   /*
4    * #%L
5    * Gateway
6    * %%
7    * Copyright (C) 2015 Powered by Sergey
8    * %%
9    * Licensed under the Apache License, Version 2.0 (the "License");
10   * you may not use this file except in compliance with the License.
11   * You may obtain a copy of the License at
12   * 
13   *      http://www.apache.org/licenses/LICENSE-2.0
14   * 
15   * Unless required by applicable law or agreed to in writing, software
16   * distributed under the License is distributed on an "AS IS" BASIS,
17   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18   * See the License for the specific language governing permissions and
19   * limitations under the License.
20   * #L%
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   * Created by aautushk on 10/9/2015.
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 /* isHtml */);
122         mailSender.send(message);
123     }
124 }