首先配置yml文件(配置邮件信息)
spring:
application:
name: project
mail:
host: smtp.qq.com
username: xxx@qq.com
password: xxxx(授权码)
properties.mail.smtp.ssl.enable: true
service层代码
@Service("serviceDataService")
@Slf4j
@EnableAsync
public class ServiceDataServiceImpl implements ServiceDataService {
@Resource
private AsyncSendMailUtil asyncSendMailUtil;
@Override
@Transactional
public RestResponse sendEmail(ServiceData serviceData) {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = null;
mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
List<String> emails = new ArrayList<>();
emails.add("xxxxxx.com");
asyncSendMailUtil.SendEmail(mimeMessageHelper, mimeMessage, emails);
}
}
邮件发送工具类
@Component
public class AsyncSendMailUtil {
@Autowired(required = false)
JavaMailSender javaMailSender;
@Async
public void SendEmail(MimeMessageHelper mimeMessageHelper, MimeMessage mimeMessage, List<String> emails) {
emails.stream().sequential().forEach(email -> {
try {
System.out.println(email + " : 发送中>>>>>>");
mimeMessageHelper.setTo(email);
mimeMessageHelper.setFrom("xxxxx@qq.com");
javaMailSender.send(mimeMessage);
System.out.println(email + " : 发送成功>>>>>>");
} catch (MessagingException e) {
e.printStackTrace();
}
});
}
}
这里需要注意的是,异步方法不要和service层方法在一个类里面,否则会失效,可以单独搞一个工具类。
觉得有用的点个赞吧。。