Javamail Будет SMTPSendFailedException
Я пишу массовую почтовую программу, используя JavaMail api. У меня есть сервер Microsoft Exhange, на который я пытаюсь отправлять электронные письма. Когда я запускаю свою программу, я получаю следующую ошибку:
**com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2057)
at com.sun.mail.smtp.SMTPTransport.finishData(SMTPTransport.java:1862)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1100)
at javax.mail.Transport.send0(Transport.java:195)
at javax.mail.Transport.send(Transport.java:124)
at SendEmail.postMail(SendEmail.java:100)
at EmailGenerator.main(EmailGenerator.java:52)**
Часть моего кода, пытающаяся отправить сообщение, выглядит следующим образом:
Properties props = new Properties();
props.put("mail.smtp.host", email_server);
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.auth", true);
class EmailAuthenticator extends Authenticator {
String user;
String pw;
EmailAuthenticator (String FROM, String PASSWORD)
{
super();
this.user = FROM;
this.pw = PASSWORD;
}
public PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(user, pw);
}
}
Session session = Session.getInstance(props, new EmailAuthenticator(USER, PASSWORD));
session.setDebug(debug);
System.out.println("Session created");
.. CREATED MESSAGE HERE...
Transport transport = session.getTransport("smtp");
transport.connect(exchange_server,user,password);
transport.send(msg);
transport.close();
Интересно, я пропустил какую-то конфигурацию на стороне сервера Exchange или проблема с моим кодом?
1 ответ:
Хорошо, я понял, где я ошибался здесь и публикую ответ, если кто-то еще может извлечь из него какую-то ценность. У меня была следующая строка кода:
props.put("mail.smtp.auth", true);
Это говорило моему приложению, что ему нужно аутентифицироваться на SMTP-сервере, хотя на самом деле это не так. Это вызывало мое приложение от входа в SMTP-сервер и отправки электронной почты и, таким образом, производя сообщение об ошибке. Установка этому свойству значения false или отсутствие этой строки кода исправили проблему для мне. Эта строка кода необходима только для SMTP-серверов, которым требуется войти в систему, чего не сделал мой сервер Exchange.