前提
最近開發發送郵件功能,出現一些問題,特此記錄一下。小編開發過程一直都是單元測試,可以發送成功,但是從swagger就是一直提示錯誤。
問題一
其實翻譯一下錯誤,文法不對。
再加上小編出現錯誤的前提,功能肯定可以能用,是以懷疑對象為傳輸過程出現了問題。使用debug調試了一下,發現傳輸過程過程郵箱位址錯誤。因為郵件位址用含有特殊字元,是以“@”以及後面的内容沒有成功傳輸。
解決方案
之前郵件位址當成字元串傳遞,現在吧郵箱位址放到Json對象中傳遞。
問題二
翻譯一下,認證失敗。
1、檢查郵件賬戶名稱和密碼是否正确。(使用QQ郵箱,需要在密碼的地方輸入授權碼)
2、判斷郵件是否開啟POP3以及SMTP
3、檢查配置中smtpHost是否為使用郵箱伺服器的主機位址。
4、檢查配置中smtpPort端口号,如果沒有加密則為25,加密則為465
問題三
本機發送不亂碼,伺服器測試環境發送郵件均為亂碼
經驗告訴我,亂碼肯定是編碼問題!
//message.setSubject(subject);
message.setSubject(MimeUtility.encodeText(subject, "UTF-8", "B"));
第一句在本機測試沒有問題,伺服器上亂碼
第二句本機伺服器上均正常!
總結
遇到問題,一定要真正了解問題的根源,減少拿着問題大海撈針的檢索,從根本上提高解決問題的效率。