使用Javamail发送邮件,运行一段时间后,通过jstack查看,发现发送邮件的线程有时会被阻塞住,而且没有异常抛出。
经过一番搜索后,找到的方案时对发送邮件设置超时,以免线程被长期阻塞。
JavaMail设置发送邮件超时参数如下:
- mail.smtp.connectiontimeout:连接时间限制,单位毫秒。是关于与邮件服务器建立连接的时间长短的。默认是无限制。
- mail.smtp.timeout:邮件接收时间限制,单位毫秒。这个是有关邮件接收时间长短。默认是无限制。
- mail.smtp.writetimeout:邮件发送时间限制,单位毫秒。有关发送邮件时内容上传的时间长短。默认同样是无限制。
附属上SpringBoot对JavaMail的超时设置:
spring:
mail:
mail:
smtp:
timeout: 2000
connectiontimeout: 500
writetimeout: 2000