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

如何修复java中的“无法将套接字转换为TLS”错误

勾裕
2023-03-14

我正在使用JavaMail API发送一封包含文本文件的电子邮件。我写的这段代码上周运行良好,但是我今天登录并运行程序并在底部附加的图像中收到错误。我更新到最新版本的java 8,仍然收到此错误。(我必须使用java 8进行项目工作)我查看了此更新的java 8补丁说明,看到根CA证书被删除,我不知道该怎么想/做。我发布这个问题是因为我在其他大量有关此问题的问题中找不到任何解决方案。

我正在运行Java8(jre 1.8.0_221),以前是运行jre 1.8.0_211。我不知道发生了什么变化,因为它今天停止使用v.211,并且在我使用v.221更新到Java8的最新版本后也不工作。我尝试了各种其他属性,但没有成功。我不确定这是否是Java删除特定的东西(我怀疑),或者它是否与防火墙权限有关,我可能拥有或不拥有任何smtp权限。无论如何,电子邮件发送部分的代码如下,代码在Transport.send(消息)失败;错误“无法将套接字转换为TLS”

                Properties props = new Properties();
                props.put("mail.smtp.auth", "true");
                props.put("mail.smtp.starttls.enable", "true");
                props.put("mail.smtp.host", host);
                props.put("mail.smtp.port", "25");
                props.put("mail.smtp.debug", "true");

                Session session = Session.getInstance(props, new javax.mail.Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(smtpUsername, u2);
                    }
                });

                try {
                    Message message = new MimeMessage(session);
                    message.setFrom(new InternetAddress(from));
                    message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
                    message.setSubject(prop.getProperty("Message"));

                    BodyPart messageBodyPart = new MimeBodyPart();
                    messageBodyPart.setText(prop.getProperty("Message"));

                    Multipart multipart = new MimeMultipart();
                    multipart.addBodyPart(messageBodyPart);

                    messageBodyPart = new MimeBodyPart();
                    DataSource source = new FileDataSource(prop.getProperty("text") + ".txt");
                    messageBodyPart.setDataHandler(new DataHandler(source));
                    messageBodyPart.setFileName(prop.getProperty("filename"));
                    multipart.addBodyPart(messageBodyPart);

                    message.setContent(multipart);

                    Transport.send(message);
                    System.out.println("Sent successfully.\n");

我收到错误消息。希望我解释得足够透彻。这只是我在这里问的第二个问题。非常感谢您的帮助,谢谢。

共有1个答案

单于轶
2023-03-14

我不是专家,但是。。。

2019年4月,或在您的环境中应用某些根证书时,您可能会受到故意不信任的影响(关于:https://blogs.oracle.com/java-platform-group/jdk-distrusting-symantec-tls-certificates).

 类似资料:
  • 我用Javax发送邮件有问题。我们使用gmail大约4年了,用我们的Java软件发送邮件。现在我得到了以下错误: 以下是我的gmail设置: 我还尝试了其他邮件服务器(O365、Strato),但收到了相同的错误。

  • 我想通过单击JFrame netbeans中的按钮将邮件从我的电子邮件地址发送到另一个电子邮件地址。这是代码, 但它给了我以下错误, javax.mail.MessagingException:无法将套接字转换为TLS;嵌套异常是:java.io.lOException:使用SSL套接字工厂类启动TLS中的异常null: host, portsmtp.gmail.com,587;异常:java.l

  • 我正在尝试通过Gmail SMTP服务器使用JavaMail发送电子邮件。代码如下: 返回此错误: 无法将套接字转换为TLS; 完整的堆栈跟踪: 异常线程"main"javax.mail.RuntimeException:ervice.connectMessagingException:无法将套接字转换为TLS;嵌套异常是:ervice.java:176SSLHandshakeException:

  • 我收到了错误:org.springframework.mail。MailSendException:邮件服务器连接失败;嵌套的异常是javax.mail。MessaginException:无法将套接字转换为TLS;嵌套的异常是:javax.net.ssl。SSLHandshakeException:没有合适的协议(协议被禁用或密码套件不合适)。失败的消息:javax.mail。MessaginE

  • 在一个应用程序中,我使用java实现了邮件发送逻辑。我使用了smtp.gmail。com587端口,具有有效的gmail id和密码。在开发环境中,一切正常。但在生产环境中,我需要使用不同的邮件服务器,例如smtp.xyz。在端口25上输入有效的电子邮件id和密码。 当我继续使用以下代码启用SSL时: 我出错了

  • 这是我在那个盒子里提到的代码。所以请检查这个代码并给我正确的答案。此代码完全在我的系统中运行,运行成功并显示生成成功,但邮件ID中未发送消息。所以请帮帮我。 提前感谢 这是我的密码。