Java 无法发送邮件:无法将套接字转换为TLS;

Java 无法发送邮件:无法将套接字转换为TLS;,java,email,outlook,jakarta-mail,office365,Java,Email,Outlook,Jakarta Mail,Office365,以下代码作为Java应用程序eclipse使用,但在SAP PO server中部署时会引发以下异常: 注意:独立java文件在我的笔记本电脑(Windows)上运行,其中as服务器不是Linux javax.mail.MessaginException:无法将套接字转换为TLS; 嵌套异常为:java.net.SocketException: java.security.NoSuchAlgorithmException:构造错误 实现(算法:默认,提供程序:SunJSSE,类: com.sun

以下代码作为Java应用程序eclipse使用,但在SAP PO server中部署时会引发以下异常:

注意:独立java文件在我的笔记本电脑(Windows)上运行,其中as服务器不是Linux

javax.mail.MessaginException:无法将套接字转换为TLS; 嵌套异常为:java.net.SocketException: java.security.NoSuchAlgorithmException:构造错误 实现(算法:默认,提供程序:SunJSSE,类: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)


对于要保留的记录,我遇到了相同的问题,并认为这是服务器配置中的问题。
原来是防火墙配置。这没有释放到smtp服务器的连接请求。

对于要保留的记录,我遇到了相同的问题,并认为这是服务器配置中的问题。
原来是防火墙配置。这没有向smtp服务器发出连接请求。

我不知道“SAP PO服务器”是什么,但它似乎改变了JDK的安全配置,从而阻止它使用默认的SSLSocketFactory创建SSL套接字。比较工作和非工作机器之间的jre/lib/security/java.security文件。您好,此代码是java版本1.6.0_18正在工作,但1.6.0_81此版本不工作较新版本的JDK已加强了与SSL/TLS相关的安全配置。我不知道细节,但我没想到你会犯这样的错误。通过打开JSSE调试选项(如中所述),您可能会获得更多信息来帮助诊断问题。正如您提到的yoi deploy on SAP PO,它可能运行在SAP JVM上,它与该JVM高度相关(这是SAP自己对标准JVM的实现/重新打包),我不知道“SAP PO服务器”是什么,但它似乎改变了JDK的安全配置,从而阻止它使用默认的SSLSocketFactory创建SSL套接字。比较工作和非工作机器之间的jre/lib/security/java.security文件。您好,此代码是java版本1.6.0_18正在工作,但1.6.0_81此版本不工作较新版本的JDK已加强了与SSL/TLS相关的安全配置。我不知道细节,但我没想到你会犯这样的错误。通过打开JSSE调试选项(如中所述),您可能会获得更多信息来帮助诊断问题。正如您提到的yoi deploy on SAP PO,它可能运行在SAP JVM上,它与该JVM高度相关(这是SAP自己对标准JVM的实现/重新打包)
public static void main(String[] args) {
        PropertiesSerDto dto = new PropertiesSerDto();

        dto.setEmailAuth("true");
        dto.setEmailStarttlsEnable("true");
        dto.setEmailHost("outlook.office365.com");
        dto.setEmailPort("587");
        dto.setEmailPassword("1234");
        dto.setEmailFrom("test@mail.com");
        dto.setEmailUser("test@mail.com");
        String to="to@gmail.com";
        String subject="Mail Testing";
        String message = "Hello";
        try {
            sendHtmlEmail(dto,to,subject,message);
        } catch (AddressException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (MessagingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static void sendHtmlEmail(PropertiesSerDto dto, String to, String subject, String message) throws AddressException, MessagingException {

        // sets SMTP server properties
        Properties properties = new Properties();
        properties.put("mail.smtp.host", dto.getEmailHost());
        properties.put("mail.smtp.port", dto.getEmailPort());
        properties.put("mail.smtp.auth", dto.getEmailAuth());
        properties.put("mail.smtp.starttls.enable", dto.getEmailStarttlsEnable());
        final String user = dto.getEmailUser();
        final String password = dto.getEmailPassword();
        // creates a new session with an authenticator
        Authenticator auth = new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(user, password);
            }
        };
        Session session = Session.getInstance(properties, auth);
        // creates a new e-mail message
        Message messageContent = new MimeMessage(session);
        messageContent.setFrom(new InternetAddress(dto.getEmailFrom()));
        InternetAddress[] iAdressArray = InternetAddress.parse(to);
        messageContent.setRecipients(Message.RecipientType.TO, iAdressArray);
        messageContent.setSubject(subject);
        messageContent.setSentDate(new Date());
        // set plain text message
        messageContent.setContent(message, "text/html");
        // sends the e-mail
        Transport.send(messageContent);

    }