Я пытаюсь использовать подключение к 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 через другие средства с этим паролем и этим именем пользователя работал хорошо.