項目中需要用到javamailAPI,郵箱服務器用的sohu閃電郵,SMTP協議用來發送,賦值代碼:
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "SMTP");
props.setProperty("mail.host", "smtp.sohu.com");gang
props.setProperty("mail.smtp.auth", "true");// 指定驗證為true
props.setProperty("mail.debug", "true");// 開啟debug日志,日志更詳細
這段代碼,寫的比較早,記得當時可以發送成功的。大概過了半年吧,還是這段代碼,但是發送郵件的時候,突然報錯:
DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM
DEBUG SMTP: AUTH LOGIN command trace suppressed
DEBUG SMTP: AUTH LOGIN failed
AUTH LOGIN failed;Invalid username or password
這個錯誤困擾了我一上午,NND,煩躁。網上什么解決方法都有,我試了,都不行。金模板,怎么辦...
堅持,接着找,總會到達彼岸@@就這樣自我鼓勵,在stackofflow上,終於找到了一個類似的問題,雖然不完全一樣,還得試試吧。
就在 上面的代碼下又加了一句:props.put("mail.smtp.starttls.enable", "true");
mvn compile test,運行測試類,竟然成功了!!!!
成功的代碼:
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "SMTP");
props.setProperty("mail.host", "smtp.sohu.com");
props.setProperty("mail.smtp.auth", "true");// 指定驗證為true
props.setProperty("mail.debug", "true");// 開啟debug日志,日志更詳細
props.put("mail.smtp.starttls.enable", "true");
注:
如果使用163,qq郵箱...等,需要使用授權碼來登錄郵箱服務器,所以在代碼中,應該用授權碼來替換密碼!
