最近项目中遇到一个需求,对数据库中某些表进行监控,每天在指定时间发送短信给相关人员。需求很简单,代码也基本是现成的,但是在发送邮件时却遇到意想不到的问题,错误信息如下:
javax.mail.MessagingException: Exception reading response;
nested exception is:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
按照字面意思理解,应该是缺少某个加密证书,但问过同事之后都没有遇到这个问题,而且发送邮件的方法是项目封装好的通用方法,在其他需求中使用正常。网上查找资料,基本都是通过编码方式生成证书,但是未能解决这个错误。后来发现每次出现异常都是创建连接时报错,怀疑是服务器连接超时导致,修改配置
spring.mail.properties.mail.smtp.timeout=3600可以发送,但仍可能出现上述错误,发布服务器后正常,具体原因还有待跟踪。暂时做一下记录。