2011-12-17 3 views
2

Я использую apace common mail API для отправки html-писем. следующий мой код.550 Доступ запрещен - Недействительное имя HELO

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 

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

Благодаря

+2

Вы не приветствовали сервер правильно :( –

+0

Привет, спасибо за ответ, пожалуйста, помогите мне в этом. Я новичок в конфигурации SMTP-сервера. – Pedantic

+1

Возможно * слегка * связанный http://stackoverflow.com/questions/4934373/ invalid-helo-name-in-javamail –

ответ

1

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

+0

Но когда я использую нормальный java API, он работает нормально, но когда я использую API-интерфейс обычной почты Apache, он не работает. Я уверен, что мне нужна дополнительная конфигурация. Но не знаю, какую конфигурацию. thanks – Pedantic

+0

Администратор почтового сервера будет знать. Это почтовый сервер, который отклоняет ваш доступ. –

1

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

 
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); 
3

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

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

удачи :)

Смежные вопросы