(更新)Java + 騰訊企業郵箱 + javamail + SSL 發送郵件


咳咳~最頭疼的就是莫名其妙的錯誤。

本來今年6月份運行通過的代碼,過倆月就報錯了。

 1 javax.mail.MessagingException: Could not connect to SMTP host: smtp.exmail.qq.com, port: 465;  
 2   nested exception is:  
 3     javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure  
 4     at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2102)  
 5     at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:699)  
 6     at javax.mail.Service.connect(Service.java:388)  
 7     at javax.mail.Service.connect(Service.java:246)  
 8     at javax.mail.Service.connect(Service.java:195)  
 9     at javax.mail.Transport.send0(Transport.java:254)  
10     at javax.mail.Transport.send(Transport.java:124)  
11     at com.genepoint.tool.EmailUtil$2.run(EmailUtil.java:78)  
12 Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure  
13     at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)  
14     at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)  
15     at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:2023)  
16     at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1125)  
17     at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)  
18     at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)  
19     at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)  
20     at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:598)  
21     at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:372)  
22     at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:238)  
23     at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2066)  
24     ... 7 more  

經過在網上查閱得知,騰訊修改了郵箱的加密方式,一種方法呢比較簡單。

官方jce

JCE 即 Java 加密擴展(JCE, Java Cryptography Extension),是一組提供加密、密鑰生成、密碼協議和消息認證碼(MAC, Message Authentication Code)算法的框架和接口包,支持包括對稱密碼、不對稱密碼、分組密碼、流密碼。該軟件還支持安全流和密封對象。

Java8影響郵件發送解決辦法:

對應我的 Java 8 的版本,下載 JCE ,解壓並將其中的兩個 jar 包: local_policy.jar , US_export_policy.jar 復制到 %JAVA_HOME%\jre\lib\security 即可。

我嘗試了一下,結果不好使你們知道嗎!!然后我就懷疑是不是我改變了jre里面的文件沒有同步的原因,

所以eclipse工程-》右鍵-》工程properties-》Java build path-》Libraries

先刪除JRE SYSTEM,然后再添加

ok

運行程序試試--

郵箱查看

媽的終於好使了。

這里提一句,我的代碼不用做任何改變,代碼參照原版Javamail發郵件的文章

 

如果。。。如果這種方法不好使!可以跟我探討一下吧,因為我也不是大牛牛,可以共同進步進步。

還有另外一種方法,不過看起來比較復雜

參見這篇文章--》

RC4被JDK8默認禁用導致騰訊QQ郵箱無法訪問

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM