本人一直從事JAVA後端開發,但一直想作一個本身的網站.爲了學習和了解更多.因此沒用建站程序,是本身一行一行敲HTLM和JS碼出來的.本人碼後端還行,可是前端真的是太水了.截至目前,前端在移動端顯示效果仍是很是糟糕.固然,我也一直在改.也但願Osc大佬多給我意見和指導.html
好了,說說今天的問題(http://www.wejias.com/html/article/article-7.html):前端
BUG背景java
今日下午,找Q羣裏夥伴幫忙點點各處功能。兄弟們很熱情,在此謝過了。固然,我謝謝尚未說出口,各類說問題的聲音,此起彼伏,一浪接一浪。雖然音浪很強,但此時個人心裏甚至毫無波動(由於前端確實不少BUG)。但忽然在衆多浪叫聲中,一哥哥的聲音特別刺耳,只因他說,他卡死了。這樣的話,我聽到是,很是驚慌的呀。我前端浪就算了,怎麼還有卡死這樣的問題呢。內心和全部程序猿第一反應同樣同樣的:"這不科學呀,我這裏沒有問題呀..."但在事實面前,再加上我又是求人幫忙測試,這時我低下高傲的頭顱.去問狀況了.後端
吾:怎麼卡死的...不該該呀安全
兄:就直接卡死了服務器
吾:有什麼操做麼(此時心裏很懵逼呀,直接卡死,是什麼鬼)socket
兄:沒有,就以前點了個驗證碼。學習
至此,我陷入無限的沉思中。我用的雲服務器提供的免費郵箱服務,不至由於免費送的,就這麼弱雞呀。測試
找緣由網站
1.分析
2.驗證
a.查看API項目日誌找到以下信息:
DEBUG SMTP: trying to connect to host "***.****.***", port 25, isSSL false Exception: Could not connect to SMTP host: ***.****.***, port: 25;
b.此時對SMTP地址進行PING,能通,沒有問題.而後TELNET,發現不行.但此時比較奇怪的是,我在本地WINDOWS上沒有任何問題的
c.此時以爲應該,我機器防火牆有問題,準備直接去修改,但轉念一想,我沒有禁過這個端口
d.因而到阿里雲服務器官網查了一下,發現阿里爲了雲服務器安全,全部機器25出方向默認禁止,須要提工單解封見網址:
同是也有一些別的解決方案,好比用465 SSL進行發送。因爲考慮到工單能夠要晚一點官方纔能解決,因此就決定用第二種方式試一把。
解決問題
修改代碼將原來運用25發送改成用465,主要代碼以下:
import java.util.Properties; Properties properties = new Properties(); properties.put("mail.smtp.auth", "true"); properties.put("mail.smtp.host", ConfigHelper.getSMTP());//SMTP地址 properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); properties.put("mail.smtp.socketFactory.port", ConfigHelper.getSMTPPort());//其值爲465 properties.put("mail.smtp.port", ConfigHelper.getSMTPPort()); properties.put("mail.user", ConfigHelper.getFromEmail()); properties.put("mail.password", ConfigHelper.getSMTPPassword()); // 訪問SMTP服務時須要提供的密碼 properties.put("mail.smtp.ssl.enable", "true");// 設定用SSL方式 //下面這行的實際內容("mail.transport.protocol","smtp") properties.setProperty(ConfigHelper.getMailTransportProtocol(), ConfigHelper.getMailTransportProtocolValue());
測試OK.
到此,問題解決。謝謝,QQ羣衆兄弟.
此貼問題在我本身的網也發佈了,若是有遇到相似的問題兄弟,可參考原文.