天天看點

java發郵件,這個坑你能填嗎?

今天利用java發郵件,本地windows上測試時發送ok的,部署到伺服器上卻報異常,讓我們走進異常,探索到底坑在哪裡,并填之。

利用outlook發郵件代碼如下:

上面的代碼打包在本地tomcat上運作,可以發送郵件成功。但是将war包部署到亞馬遜雲伺服器上發送郵件報錯:

java發郵件,這個坑你能填嗎?

網上說是由于使用者名和密碼不正确導緻驗證失敗。但是這不能解釋本地能發出去郵件的事實。繼續排查、google,實在找不到解決辦法。那就試着登陸下outlook郵件看能不能登進去,登陸正常,有一封最近的一次登入存在某些異常的郵件。

然後點選檢視最新活動狀态。異常顯示最近一次登陸在美國。

java發郵件,這個坑你能填嗎?

這麼一來就知道問題了,由于亞馬遜雲實際位置在美國,是以發郵件時相當于在異地登陸被拒絕。當點選了“是我本人”之後,重新發郵件,就發出去了。

java發郵件,這個坑你能填嗎?

之是以不用163發郵件,是因為本地部署也可以發出去,放到伺服器上也發不出,報554 DT:SPM 163 smtp3,網上說是因為郵件主題和正文中又非法字元導緻,目前還沒解決,之後再填此坑。