解决JavaMail发送邮件阻塞线程的问题

时间:2022-06-15 16:50:02

使用Javamail发送邮件,运行一段时间后,通过jstack查看,发现发送邮件的线程有时会被阻塞住,而且没有异常抛出。

经过一番搜索后,找到的方案时对发送邮件设置超时,以免线程被长期阻塞。

JavaMail设置发送邮件超时参数如下:

  • mail.smtp.connectiontimeout:连接时间限制,单位毫秒。是关于与邮件服务器建立连接的时间长短的。默认是无限制。
  • mail.smtp.timeout:邮件接收时间限制,单位毫秒。这个是有关邮件接收时间长短。默认是无限制。
  • mail.smtp.writetimeout:邮件发送时间限制,单位毫秒。有关发送邮件时内容上传的时间长短。默认同样是无限制。

附属上SpringBoot对JavaMail的超时设置:

spring:
mail:
mail:
smtp:
timeout: 2000
connectiontimeout: 500
writetimeout: 2000


相关文章