• (更新)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%jrelibsecurity 即可。

    我尝试了一下,结果不好使你们知道吗!!然后我就怀疑是不是我改变了jre里面的文件没有同步的原因,

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

    先删除JRE SYSTEM,然后再添加

    ok

    运行程序试试--

    邮箱查看

    妈的终于好使了。

    这里提一句,我的代码不用做任何改变,代码参照原版Javamail发邮件的文章

    如果。。。如果这种方法不好使!可以跟我探讨一下吧,因为我也不是大牛牛,可以共同进步进步。

    还有另外一种方法,不过看起来比较复杂

    参见这篇文章--》

    RC4被JDK8默认禁用导致腾讯QQ邮箱无法访问

  • 相关阅读:
    使用手机游戏的新闻推送
    win8.1 64位环境建设android开发环境
    LeetCode: Multiply Strings. Java
    Thread.join()分析方法
    字幕效果的幻灯片出现在网站上的图片
    JAVA技术交流群
    Android使得手机拍照功能的发展(源共享)
    领导基础课程
    Mysql开启远程连接方法
    mysql远程连接命令
  • 原文地址:https://www.cnblogs.com/LUA123/p/6039954.html
Copyright © 2020-2023  润新知