springboot怎么使用多线程异步发送邮件

本文介绍如何在SpringBoot项目中配置并实现异步发送邮件的功能。通过配置yml文件设置邮件服务器信息,并利用JavaMailSender接口配合MimeMessageHelper进行邮件发送。此外,还介绍了如何使用@EnableAsync和@Async注解实现邮件发送的异步处理。

首先配置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层方法在一个类里面,否则会失效,可以单独搞一个工具类。

觉得有用的点个赞吧。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值