起因:開(kāi)發(fā)郵件發(fā)送系統(tǒng)時(shí),使用25端口能夠正常發(fā)送郵件,啟用SSL使用465端口時(shí),發(fā)送郵件報(bào)Could not connect to SMTP host: smtp.qiye.aliyun.com, port: 465的錯(cuò)誤。

由于25端口可以正常發(fā)送郵件,所以可以保證賬號(hào)和網(wǎng)絡(luò)是通的,那么可能就出在465出站權(quán)限或者服務(wù)器環(huán)境問(wèn)題。
經(jīng)運(yùn)維同學(xué)配合排查,465端口也能正常telnet,所以不存在465出站權(quán)限的問(wèn)題,那么就只能是服務(wù)器的應(yīng)用環(huán)境問(wèn)題了。
經(jīng)過(guò)搜索引擎查找后發(fā)現(xiàn)是當(dāng)前使用JDK的版本較高(jdk11),禁用了TLSv1(因?yàn)門(mén)LSv1存在安全隱患),如下圖,TLSv1與TLSv1.1均被禁用了(配置所在JAVA_HOME/jre/lib/security/java.security)

看了一圈搜索引擎提供的解決方案是修改這里的參數(shù),去掉TLSv1,TLSv1.1保存,相當(dāng)于啟用TLSv1,TLSv1.1,確實(shí)能發(fā)送成功了。
但是TLSv1,TLSv1.1是存在安全隱患的,那么這種處理方式其實(shí)是治標(biāo)不治本的。
所以我們還得找到真正解決這個(gè)問(wèn)題的方法。
解決起來(lái)其實(shí)也很簡(jiǎn)單!就是修改郵件發(fā)送時(shí)SSL的protocol就可以了。
通過(guò)查看MailSSLSocketFactory的源碼可以發(fā)現(xiàn),他的構(gòu)造方法是可以我們自己傳入protocol的

那么這樣子就好辦起來(lái),我們直接傳入TLSv1.2;
并且為了保險(xiǎn)起見(jiàn),我們也直接在Session的Properties傳入protocol;
具體配置入下所示

發(fā)送郵件測(cè)試一下
發(fā)送的java日志

郵箱接收到的郵件文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-781775.html

圓滿解決問(wèn)題~文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-781775.html
到了這里,關(guān)于java SMTP郵件發(fā)送,修復(fù)SSL下465端口Could not connect to SMTP的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!