CreateMatterServiceImpl.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. package com.ifast.email.impl;
  2. import java.io.IOException;
  3. import java.util.HashMap;
  4. import java.util.Map;
  5. import javax.mail.MessagingException;
  6. import javax.mail.internet.MimeMessage;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.mail.javamail.JavaMailSender;
  9. import org.springframework.mail.javamail.MimeMessageHelper;
  10. import org.springframework.stereotype.Service;
  11. import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
  12. import com.ifast.common.utils.CaptchaUtils.Type;
  13. import com.ifast.email.IMailsendService;
  14. import freemarker.template.Configuration;
  15. import freemarker.template.Template;
  16. import freemarker.template.TemplateException;
  17. /**
  18. * TODO:模板发送带html格式的邮件
  19. *
  20. * @author zyl
  21. * @since:2017年9月6日
  22. * @author zyl 2017年9月6日
  23. * @version
  24. */
  25. @Service(value = "createMatterServiceImpl")
  26. public class CreateMatterServiceImpl implements IMailsendService {
  27. @Autowired
  28. private JavaMailSender javaMailSender;
  29. @Autowired
  30. private Configuration configuration;
  31. /**
  32. * (非 Javadoc)
  33. * <p>
  34. * Title: sendMessage
  35. * </p>
  36. * <p>
  37. * Description(描述):使用后模板发送邮件
  38. * </p>
  39. *
  40. * @see org.service.IMailsendService#sendMessage()
  41. */
  42. @Override
  43. public void sendMessage(String form, String to,String captcha,Type type) {
  44. MimeMessage message = javaMailSender.createMimeMessage();
  45. try {
  46. MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
  47. helper.setFrom(form);
  48. helper.setTo(to);
  49. String subiect=getSubject(type);
  50. helper.setSubject("请输入验证码 "+captcha+subiect);
  51. helper.setText(getText(to,captcha,type), true);
  52. // 从模板里面读取
  53. javaMailSender.send(message);
  54. } catch (MessagingException e) {
  55. // TODO 异常执行块!
  56. e.printStackTrace();
  57. }
  58. }
  59. /**
  60. *TODO:根据验证码类型决定不同的主题
  61. *@author ZYL 2017年9月27日
  62. *@param type
  63. *@return
  64. *@version 1.1
  65. */
  66. private String getSubject(Type type) {
  67. String result = null;
  68. switch (type) {
  69. case Register:
  70. result = " 完成注册";
  71. break;
  72. case BinDingPhone:
  73. result = " 完成绑定手机";
  74. break;
  75. case BinDingEmail:
  76. result = " 完成绑定邮箱";
  77. break;
  78. case ForgetPswd:
  79. result = " 完成忘记密码";
  80. break;
  81. case Paypwd:
  82. result = " 完成设置支付密码";
  83. break;
  84. case AlterMobile:
  85. result = " 完成修改手机";
  86. break;
  87. case AlterEmail:
  88. result = " 完成修改邮箱";
  89. break;
  90. default:
  91. throw new IllegalArgumentException("The Type isn't supported!Please see Captcha.Type!");
  92. }
  93. return result;
  94. }
  95. /**
  96. *TODO:根据验证码类型决定不同的模板
  97. *@author ZYL 2017年9月27日
  98. *@param type
  99. *@return
  100. *@version 1.1
  101. */
  102. private String getSMSContent(Type type) {
  103. String result = null;
  104. switch (type) {
  105. case Register:
  106. result = "/mail.ftl";
  107. break;
  108. case BinDingPhone:
  109. result = "/mailBinDingPhone.ftl";
  110. break;
  111. case BinDingEmail:
  112. result = "/mailBinDingEmail.ftl";
  113. break;
  114. case ForgetPswd:
  115. result = "/mailForgetPswd.ftl";
  116. break;
  117. case AlterMobile:
  118. result = "/mailAlterMobile.ftl";
  119. break;
  120. case AlterEmail:
  121. result = "/mailAlterEmail.ftl";
  122. break;
  123. default:
  124. throw new IllegalArgumentException("The Type isn't supported!Please see Captcha.Type!");
  125. }
  126. return result;
  127. }
  128. // 读取模板
  129. private String getText(String username, String captcha,Type type) {
  130. String txt = "";
  131. try {
  132. String file=getSMSContent(type);
  133. Template template = configuration.getTemplate(file);
  134. // 通过map传递动态数据
  135. Map<String, String> map = new HashMap<String, String>();
  136. map.put("username", username);
  137. map.put("captcha", captcha);
  138. // 解析模板文件
  139. txt = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
  140. } catch (IOException e) {
  141. // TODO 异常执行块!
  142. e.printStackTrace();
  143. } catch (TemplateException e) {
  144. // TODO 异常执行块!
  145. e.printStackTrace();
  146. }
  147. return txt;
  148. }
  149. public JavaMailSender getJavaMailSender() {
  150. return javaMailSender;
  151. }
  152. public void setJavaMailSender(JavaMailSender javaMailSender) {
  153. this.javaMailSender = javaMailSender;
  154. }
  155. public Configuration getConfiguration() {
  156. return configuration;
  157. }
  158. public void setConfiguration(Configuration configuration) {
  159. this.configuration = configuration;
  160. }
  161. }