Springbootmail多线程发送邮件

问题遇到的现象和发生背景

线程中执行mailService.sendSimpleMail(mail)就导致线程中断,且下面的System.out.println("发送邮件")无法输出,注释掉sendSimpleMail线程就可以正常发送多封邮件

问题相关代码

@Component
public class ConsumeMailQueue {

@Autowired
MailService mailService;

class PollMail implements Runnable {
    MailService mailService;

    public PollMail(MailService mailService) {
        this.mailService = mailService;
    }

    @Override
    public void run() {
        while (true) {
            try {
                System.out.println("####################");
                Email mail = MailQueue.getMailQueue().consume();
                if (mail != null) {
                    //可以设置延时 以及重复校验等等操作
                    try {
                        System.out.println("剩余邮件总数:" + MailQueue.getMailQueue().getSize());
                        System.out.println("email:" + mail.getEmail());
                        System.out.println("subject:" + mail.getSubject());
                        System.out.println("content:" + mail.getContent());
                        mailService.sendSimpleMail(mail);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    System.out.println("发送邮件");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

@PostConstruct
public void startThread() {
    ExecutorService e = Executors.newFixedThreadPool(1);// 两个大小的固定线程池
    e.submit(new PollMail(mailService));
    //e.submit(new PollMail(mailService));
}

@PreDestroy
public void stopThread() {
    System.out.println("destroy");
}

}

运行结果及报错内容

未注释sendSimpleMail

img

我想要达到的结果

注释掉sendSimpleMail

img

问题明显是这句的问题了,检查看账号密码是否正确,请求是否超时


mailService.sendSimpleMail(mail)