MailService.java 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package com.llisoft.sms.service;
  2. import java.util.Arrays;
  3. import org.slf4j.Logger;
  4. import org.slf4j.LoggerFactory;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.beans.factory.annotation.Value;
  7. import org.springframework.mail.SimpleMailMessage;
  8. import org.springframework.mail.javamail.JavaMailSenderImpl;
  9. import org.springframework.scheduling.annotation.Async;
  10. import org.springframework.stereotype.Service;
  11. /**
  12. * 邮件发送工具类
  13. * @author YangJie [2019年10月10日]
  14. */
  15. @Service
  16. public class MailService {
  17. private Logger logger = LoggerFactory.getLogger(MailService.class);
  18. @Value("${mta.debug}")
  19. private boolean debug;
  20. @Value("${mta.emails}")
  21. private String[] emails;
  22. @Autowired
  23. private JavaMailSenderImpl javaMailSender;
  24. /**
  25. * 发送邮件
  26. * @param subject 主题
  27. * @param text 邮件内容
  28. * 注意主线程结束后线程池中任务不会继续执行
  29. */
  30. @Async // 此注解表示方法异步执行, 在同一个类中调用无效, 因为spring会生成动态代理类完成异步调用
  31. public void sendMail(String subject, String text){
  32. sendMail(subject, text, emails);
  33. }
  34. /**
  35. * 发送邮件
  36. * @param subject 主题
  37. * @param text 邮件内容
  38. * @param tos 收件人列表
  39. */
  40. @Async // 此注解表示方法异步执行, 在同一个类中调用无效, 因为spring会生成动态代理类完成异步调用
  41. public void sendMail(String subject, String text, String... emails){
  42. if (debug) { // 开发模式不发邮件
  43. logger.info("开发模式不发邮件:{}", subject);
  44. return;
  45. }
  46. SimpleMailMessage mailMessage = new SimpleMailMessage();
  47. mailMessage.setFrom(javaMailSender.getUsername());
  48. mailMessage.setTo(emails);
  49. mailMessage.setSubject(subject);
  50. mailMessage.setText(text==null ? "" : text);
  51. javaMailSender.send(mailMessage);
  52. logger.info("已向邮箱{}发送了主题为[{}]的邮件", Arrays.asList(emails), subject);
  53. }
  54. }