2014-11-03 2 views
2

Я пытаюсь отправить электронное письмо, вызванное кодом.Как избежать ошибки электронной почты (550 5.7.1 Команда отклоняется) с Wildfly 8.1

@Stateless 
public class MailBean { 

    private static Logger LOGGER = Logger.getLogger(MailBean.class); 
    private String EMAIL_REGEX = "^(([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5}){1,25})+([;.](([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5}){1,25})+)*$"; 

    @Resource(name = "java:jboss/mail/Default") 
    private Session mailSession; 

    @Asynchronous 
    public void send(String addresses, String topic, String textMessage) { 

     try { 
      MimeMessage message = new MimeMessage(mailSession); 
      message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(addresses)); 
      message.setSubject(topic); 
      message.setText(textMessage); 

      Transport transport = mailSession.getTransport(); 
      transport.connect(); 
      transport.send(message); 

     } catch (MessagingException ex) { 
      LOGGER.error("Cannot send mail to " + addresses + ". Error: " + ex.getMessage(), ex); 
     } 
    } 

    public boolean isValidEmailAddress(String email) { 
     if (email == null) 
      return false; 
     else 
      return email.matches(EMAIL_REGEX); 
    } 
} 

Мой Wildfly 8.1 Сервер настраивается следующим образом:

<subsystem xmlns="urn:jboss:domain:mail:2.0"> 
    <mail-session name="mail-session-default" jndi-name="java:jboss/mail/Default"> 
       <smtp-server outbound-socket-binding-ref="mail-smtp" 
       ssl="false" 
       username="[email protected]" 
       password="****"/> 

    </mail-session> 
</subsystem> 

Гнездо исходящее так:

<outbound-socket-binding name="mail-smtp"> 
    <remote-destination host="mail.doe.com" port="25"/> 
<outbound-socket-binding> 

сообщил об ошибке

(EJB default - 2) L:38 Cannot send mail to [email protected] Error: 550 5.7.1 Command rejected 
: com.sun.mail.smtp.SMTPSendFailedException: 550 5.7.1 Command rejected 

Как и в Например, я пытаюсь отправить электронное письмо m мой аккаунт [email protected] на [email protected] Не в другой домен.

При запуске wildfly не сообщает об ошибках в этой конфигурации.

[org.jboss.as.mail.extension] (MSC service thread 1-5) L:136 JBAS015400: Bound mail session [java:jboss/mail/Default] 

Любая подсказка, почему это не удается? В общем, мне интересно, почему Java-Mail ведет себя не как обычный почтовый клиент.

ответ

0

Отмечая, что неправильная реализация конфигурации или javamail. Просто почтовый сервер отклоняет команды от вас/вашего sever/... Существует много причин, по которым почтовый сервер будет это делать, но в большинстве случаев все они связаны с предотвращением спама.

см. Связанные темы на SO об этом как привет, и все они связаны с конфигурацией почтового сервера.

подробнее см:

https://serverfault.com/questions/453638/plesk-postfix-smtp-550-5-7-1-command-rejected-for-one-external-sender

https://serverfault.com/questions/540159/remote-host-said-550-5-7-1-message-content-rejected