当前位置: 首页 > 知识库问答 >
问题:

Java找不到有效的证书

羊光辉
2023-03-14

我有麻烦,同时使用Java发送电子邮件到Zimbra邮件服务器运行异常。

这是我的JavaTest.java

public class Test {

    public static void main(String[] args) {
        sendMail("receiver@domain.com","Test","Test Message",null); 
    }

    public static Properties getMailProperties() {
        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", "smtp.bevmi.com");
        props.put("mail.smtp.port", "587");
        return props;
    }

    public static boolean sendMail(String to, String subject,String text,String cc)  {
        final String username = "user@domain.com;
        final String password = "password";
        Properties props = getMailProperties();
        Session session = Session.getInstance(props,
        new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        });
        try {
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(username));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
            message.setSender(new InternetAddress("sender@domain.com"));
            if ((cc!=null) && (!cc.isEmpty())) {
                message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));
            }
            message.setSubject(subject);
            message.setText(text,  "UTF-8", "html");
            System.out.println("Sending Message to :" + to);
            Transport.send(message);
            System.out.println("Email Sent");
            return true;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

}

我在我的“主”线程中得到了以下RuntimeException堆栈跟踪。

java.lang.RuntimeException:javax.mail.MessagingException:无法将套接字转换为TLS;嵌套异常是:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到有效的认证路径到请求的目标在Test.sendMail(Test.java:57)在Test.main(Test.java:13)

共有1个答案

屈浩波
2023-03-14

你看了这个吗?这可能是你的解决方案。似乎你的设置遗漏了什么。

在我给您的链接中,添加此代码行可以解决相同的问题。

props.put("mail.smtp.ssl.trust","smtp.gmail.com");

在这种情况下,不应该包含“smtp.gmail.com”,而应该包含“smtp.benvi.com”,如果这是您真正的主机。

我希望能有所帮助。

 类似资料:
  • 我是maven的新手,在添加依赖项(sl4j)时遇到了麻烦。我得到的这个项目显然是从Ant转换成maven的。顺便说一句,干净的安装是不起作用的。下面是pom.xml: 它在干净安装时会给出以下消息:

  • 我在Apache Tomcat7上有一个web应用程序,我的web应用程序上有不可信的证书。我的web应用程序必须与另一个使用HTTPS的web应用程序通信。然而,我总是遇到这样一个例外: 连接失败:javax.net.ssl.sslhandShakeException:sun.security.validator.validatoreXception:PKIX路径构建失败:sun.securit

  • 我正在尝试建立一个到远程服务器的ssh隧道,如下所述:使用Mysql Db从Heroku到远程服务器的ssh 但我只是想下载这些宝石就挂断了。我补充说: 但是,当我执行(甚至只是在命令行上执行)时,我会得到: 根据NetSSH的自述文件(https://github.com/net-ssh/net-ssh),我检查了Ruby的OpenSSL绑定--它们看起来不错: 我不确定这是否相关,但当我尝试下

  • 我试图访问我的应用程序中的网址,但我得到了这个错误。 我尝试应用所有这些修复,但没有成功:http://www.mkyong.com/webservices/jax-ws/suncertpathbuilderexception-unable-to-find-valid-certification-path-to-requested-target/ 很快,它需要运行InstallCert应用程序(j

  • 我刚刚安装了最新的Android Studio,我得到了标题中的错误;我尝试了互联网上的许多解决方案,但都不起作用。 所以请你帮我修一下好吗? 我收到此错误: 该项目是Android Studio中的基本项目示例。

  • 如何解决此问题? 更新2017-09-11: 我卸载了Java,然后安装了最新的Java,1.8.0#44。 我卸载了Jenkins并删除了程序文件中的文件夹。 我安装了Jenkins 2.77 这一次,在安装向导中,我注意到一个页面通知我Jenkins已脱机。 我不确定这是什么意思,因为我可以连接到互联网。我想无论出于什么原因詹金斯都不能。 我现在非常确定,当我最初安装Jenkins时,我看到了