550 Доступ запрещен - Неверное имя HELO - PullRequest
2 голосов
/ 17 декабря 2011

Я использую API общей почты apace для отправки html-писем.Ниже приведен мой код.

public void sendHTMLMail(String to, String subject, String message , String from) throws EmailException
    {

          HtmlEmail email = new HtmlEmail();
          email.setHostName(SMTP_HOST_NAME);
          email.addTo(to);
          email.setFrom(from, "just-flick");
          email.setSubject(subject);
          email.setSmtpPort(25);
          email.setHtmlMsg(message);
          email.setTextMsg("Your email client does not support HTML messages");
          email.send();

    }

Но при запуске программы появляется следующая ошибка.

Exception in thread "main" org.apache.commons.mail.EmailException: Sending the e
mail to the following server failed : mail.just-flick.com:25
    at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1242)
    at org.apache.commons.mail.Email.send(Email.java:1267)
    at bseller.mail.SendMail.sendHTMLMail(SendMail.java:105)
    at bseller.mail.SendMail.main(SendMail.java:31)
Caused by: com.sun.mail.smtp.SMTPSendFailedException: 550 Access denied - Invali
d HELO name (See RFC2821 4.1.1.1)

    at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1388)
    at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:959)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:583)
    at javax.mail.Transport.send0(Transport.java:169)
    at javax.mail.Transport.send(Transport.java:98)
    at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1232)
    ... 3 more

Пожалуйста, помогите мне настроить эту проблему.1009 *

Ответы [ 3 ]

3 голосов
/ 06 сентября 2012

Я столкнулся с той же проблемой, и когда я передаю имя хоста клиента, все стало нормально, я добавил эту строку в мой код:

props.put("mail.smtp.localhost", client or host name which connect to mail server);

Удачи:)

1 голос
/ 18 декабря 2011

Может быть, это поможет:

email.getMailSession().getProperties().setProperty("mail.smtp.localhost", "www.example.com");

Конечно, замените www.example.com доменным именем вашего хоста, с которого вы отправляете почту.

Однако, как писал Дэвид Шварц, конфигурация вашей почты также не идеальна.В настоящее время мы не отправляем почту на порт 25. Порт 587 используется для отправки, который имеет более простые правила, хотя может потребоваться аутентификация, если ваш IP-адрес не указан в белом списке.Перейдите по ссылке, приведенной pst в его комментарии.

Странно, что одна только JavaMail работает, а Apache Commons Email - нет, потому что, я думаю, Commons Email также использовал JavaMail.Это может указывать на ошибку где-то, но это потребует дальнейшего изучения.

Одна из ваших проблем заключается в том, что вы не знаете точное имя HELO, которое вы отправляете.Следующий код может помочь определить его, в противном случае позвоните администратору почты (особенно потому, что он может посоветовать вам порт 587).

email.getMailSession().setDebug(true);
1 голос
/ 17 декабря 2011

Это должен делать администратор вашего почтового сервера, а не вы. Поговорите с тем, кто сказал вам подключиться к этому почтовому серверу.

...