550 Доступ запрещен - Недопустимое имя HELO

Я использую 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

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

Спасибо


person Pedantic    schedule 17.12.2011    source источник
comment
Вы неправильно приветствовали сервер :(   -  person    schedule 17.12.2011
comment
Привет, спасибо за ответ, пожалуйста, помогите мне в этом. Я новичок в настройке SMTP-сервера.   -  person Pedantic    schedule 17.12.2011
comment
Возможно, слегка связан с stackoverflow.com /вопросы/4934373/   -  person    schedule 17.12.2011
comment
Помните, что вы всегда можете подключиться к SMTP-серверу через telnet и попробовать ввести команды HELO, чтобы увидеть, что работает, а что нет.   -  person    schedule 17.12.2011
comment
"Your email client does not support HTML messages" неправильно, должно быть "Your email client is configured to prefer what you prefer instead of what we prefer you to prefer".   -  person tripleee    schedule 06.09.2012


Ответы (4)


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

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

Удачи :)

person Mohammad Obada ALJabban    schedule 06.09.2012

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

person David Schwartz    schedule 17.12.2011
comment
Но когда я использую обычный java API, он работает нормально, но когда я использую общий почтовый API Apache, он не работает. Я почти уверен, что мне нужно выполнить дополнительную настройку. Но не уверен, какая конфигурация. Благодарность - person Pedantic; 17.12.2011
comment
Администратор почтового сервера будет знать. Это почтовый сервер отказывает вам в доступе. - person David Schwartz; 17.12.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);
person Hontvári Levente    schedule 18.12.2011
comment
Это спасло мой день - person ErrorNotFoundException; 01.11.2019

Я получал ту же ошибку, она была исправлена ​​после включения следующих свойств:

spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.auth=true
person Prateek Mehta    schedule 03.01.2021