无法连接到SMTP主机,java.security.NoSuchAlgorithmException:构造实现时出错

时间:2017-06-01 03:48:04

标签: java spring javamail

当我使用spring java邮件发送邮件时,在局域网测试环境和本地开发环境中没有问题,但是发布到生产环境,报告了以下异常:

    DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
    DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.s
    mtp.SMTPTransport,Oracle]
    DEBUG SMTP: useEhlo true, useAuth true
    DEBUG SMTP: trying to connect to host "smtp.exmail.qq.com", port 465, isSSL false 
Exception in thread "Thread-18" org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: Could not connect to SMTP host: smtp.exmail.qq.com, port: 465; nested exception is: java.net.SocketException: java.security.NoSuchAlgorithmException: Error
    constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.s ecurity.ssl.SSLContextImpl$DefaultSSLContext).

jre版本的测试环境和生产环境是1.8 update 121.两者都是windows server 2012

2 个答案:

答案 0 :(得分:0)

你看到了connection debugging tips in the JavaMail FAQ吗?可能存在阻止您连接的防火墙或防病毒软件。

答案 1 :(得分:0)

正如@Bill所说,主要是网络基础设施团队的工作是修改防火墙入站/出站策略/代理连接/打开防火墙端口/ DNS查找问题。

  1. 通过防火墙规则检查最终网址连接:

    运行tracert/traceroute <host-name>

    tracert on windows OStraceroute on *nix OS

  2. 检查端口是否已打开。

    运行telnet <host-name> <port-number>

  3. 检查代理连接。

    运行ping <host-name>

  4. 检查DNS问题。

    运行nslookup <host-name>

  5. 以上nslookup应将主机名解析为ip地址。如果没有,则必须在hosts文件/ etc / *目录中添加主机名和IP地址。

    我发现这4种技术对我调​​试网络基础问题很有帮助。我可能错过了很多,请原谅我!

    希望这有帮助!