JavaMail не может получить сертификат сервера SMTP - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь использовать подключение к SMTP-серверу для отправки электронной почты через приложение весенней загрузки. Код:

    final String username = "mail";
    final String password = "pass";

    Properties prop = new Properties();
    prop.put("mail.smtp.host", "smtp.office365.com");
    prop.put("mail.smtp.port", "587");
    prop.put("mail.smtp.auth", "true");
    prop.put("mail.smtp.starttls.enable", "true"); //TLS

    Session session = Session.getInstance(prop,
            new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password);
                }
            });

    try {

        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress("email"));
        message.setRecipients(
                Message.RecipientType.TO,
                InternetAddress.parse("receiver")
        );
        message.setSubject("Testing TLS");
        message.setText("Dear Mail Crawler,"
                + "\n\n Please do not spam my email!");

        Transport.send(message);

        System.out.println("Done");

    } catch (MessagingException e) {
        e.printStackTrace();
    }

Когда метод вызывается, он выдает ошибку: Причина: sun.security.provider.certpath.SunCertPathBuilderException: невозможно найти действительный путь сертификации для запрошенного целевого javax. net. ssl.SSLHandshakeException: сбой построения пути PKIX: sun.security.provider.certpath.SunCertPathBuilderException: не удалось найти допустимый путь сертификации для запрошенной цели

Я попытался подключиться к серверу smtp через другие средства с этим паролем и этим именем пользователя работал хорошо.

...