最近項目中遇到一個需求,對數據庫中某些表進行監控,每天在指定時間發送短信給相關人員。需求很簡單,代碼也基本是現成的,但是在發送郵件時卻遇到意想不到的問題,錯誤信息如下:
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可以發送,但仍可能出現上述錯誤,發布服務器后正常,具體原因還有待跟蹤。暫時做一下記錄。