package com.llisoft.sms.service; import java.util.Arrays; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; /** * 邮件发送工具类 * @author YangJie [2019年10月10日] */ @Service public class MailService { private Logger logger = LoggerFactory.getLogger(MailService.class); @Value("${mta.debug}") private boolean debug; @Value("${mta.emails}") private String[] emails; @Autowired private JavaMailSenderImpl javaMailSender; /** * 发送邮件 * @param subject 主题 * @param text 邮件内容 * 注意主线程结束后线程池中任务不会继续执行 */ @Async // 此注解表示方法异步执行, 在同一个类中调用无效, 因为spring会生成动态代理类完成异步调用 public void sendMail(String subject, String text){ sendMail(subject, text, emails); } /** * 发送邮件 * @param subject 主题 * @param text 邮件内容 * @param tos 收件人列表 */ @Async // 此注解表示方法异步执行, 在同一个类中调用无效, 因为spring会生成动态代理类完成异步调用 public void sendMail(String subject, String text, String... emails){ if (debug) { // 开发模式不发邮件 logger.info("开发模式不发邮件:{}", subject); return; } SimpleMailMessage mailMessage = new SimpleMailMessage(); mailMessage.setFrom(javaMailSender.getUsername()); mailMessage.setTo(emails); mailMessage.setSubject(subject); mailMessage.setText(text==null ? "" : text); javaMailSender.send(mailMessage); logger.info("已向邮箱{}发送了主题为[{}]的邮件", Arrays.asList(emails), subject); } }