我已经将证书导入了cacerts(JAVA\u HOME指向的地方),但仍然出现了这个错误。无法解决问题。客户端的邮件服务器(Microsoft ESMTP服务器)没有防火墙问题。我可以从我的服务器远程登录。已尝试SSLpoke,但超时。试过25号端口的tcpdump,可以看到来回的通信。基本上是试图触发来自邮件服务器的出站电子邮件。
详细的错误日志为:
原因:javax。邮政MessaginException:无法向SMTP主机发送命令;嵌套的例外是:javax。网ssl。SSLHandshakeException:太阳。安全验证器。ValidatorException:PKIX路径生成失败:sun。安全供应商。证书路径。SunCertPathBuilderException:无法在com上找到请求目标的有效证书路径。太阳邮政smtp。SMTP运输。com上的sendCommand(SMTPTransport.java:1420)。太阳邮政smtp。SMTP运输。com上的sendCommand(SMTPTransport.java:1408)。太阳邮政smtp。SMTP运输。com上的ehlo(SMTPTransport.java:847)。太阳邮政smtp。SMTP运输。javax上的protocolConnect(SMTPTransport.java:384)。邮政服务在javax上连接(Service.java:297)。邮政服务在javax上连接(Service.java:156)。邮政服务在javax上连接(Service.java:105)。邮政运输javax上的send0(Transport.java:168)。邮政运输在com上发送(Transport.java:98)。issuetracker。esb。邮政GmailImpl。com上的transportMessage(Gmail.java:94)。issuetracker。esb。邮政邮政sendSRMail(Mail.java:188)
在使用keytool导入证书时是否使用了-trustcacerts参数?
编辑:我关于这个主题的对话已经涵盖了错误发生的具体原因,但没有出现“答案”,所以这里有一个重写。
PKIX路径生成失败:sun。安全供应商。证书路径。SunCertPathBuilderException:无法找到请求目标的有效证书路径
此错误表示无法从正在运行的JRE使用的常驻密钥库文件(默认情况下,在JRE的jre/lib/security/cacerts文件中)中获取用于信任传入证书的有效证书链。
其典型原因包括:
使用keytools命令导入证书时忽略包含参数-Trust cacerts。
当JRE寻找它知道的与传入证书匹配的证书时,它将只考虑以这种方式标记为受信任的证书。
证书已由根CA签名,JRE尚未为其安装根证书。
通常,这是由未知根证书颁发机构(CA)签署的证书引起的,例如JRE不知道的公司内部CA,或者甚至是由一些第三方根证书颁发机构签署的证书,这些第三方根证书颁发机构不像其他一些知名供应商那样受欢迎,因此虽然浏览器或操作系统可能已经有根证书,但Java可能没有随附。
为了纠正这种情况,您还需要获取并安装根CA证书,并将其标记为trusted。
还有一些提供证书签名的公司充当中间人,这意味着他们自己没有自己的根CA,但由受信任的根CA授予证书,以允许他们进一步签署证书签名请求(CSR)。
在这些情况下,虽然您可能已经安装并信任了自己的证书和底层根CA,但除非您还获得并安装了中间证书,否则“证书链”将断开,无法创建有效的证书路径。
因此,概括而言,可能的解决方案包括:
注意:通过双击文件检查Windows中的. crt文件可以让您有机会检查证书路径,并查看是否以及涉及哪些根和中介CA来帮助显示您需要什么。
一旦安装了完整有效的证书链并将其信任到密钥库文件中,错误就会过去。
我有一个java程序(从谷歌复制的)可以使用office365 SMTP发送电子邮件,它作为一个独立的java程序运行良好,但当我在web应用程序的中将这个java程序部署为jar文件,并从JSP调用该方法时,它抛出了以下错误: 有人能分享一下他们对这个问题的看法吗。java代码:
我有另一个转换套接字异常。Stackoverflow将我和相关答案联系起来,我已经做了人们建议的所有事情。 这里有异常描述: 线程“main”javax中出现异常。邮政MessaginException:无法将套接字转换为TLS;嵌套的例外是:java。网SocketException:java。安全NoSuchAlgorithmException:在com上构造实现时出错(算法:Default,
我在我的camunda环境中有这个类(我在camunda modeller中使用这个类作为服务任务):
这仅适用于(smtp.office365.com)smtp。
问题内容: 我正在尝试执行Java邮件,并且收到错误消息“无法将命令发送到SMTP主机”。任何帮助,将不胜感激。以及任何将来可能出现的问题的解决方案。确切的例外是 我的代码如下 问题答案: 服务器需要STARTTLS。如果我使用telnet进行手动SMTP会话,则会得到以下信息: 该服务器不接受未加密的连接
我目前有一个邮件服务器正在运行。我可以通过 mywebsite.com/roundcube/ 从这个网站我可以发送和接收电子邮件适当。日志显示所有的邮件进出都很好。我从这里发到我的gmail账户,然后又发回来。 然而,我真正想做的是使用javax mail从java发送一些邮件。