我正在尝试发送从代码调用的电子邮件。
@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="john@doe.com"
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 jane@doe.com. Error: 550 5.7.1 Command rejected
: com.sun.mail.smtp.SMTPSendFailedException: 550 5.7.1 Command rejected
如示例中所示,我尝试从我的帐户 john@doe.com 向 jane@doe.com 发送一封电子邮件。不是到另一个域。
启动时,wildfly 不会报告此配置的任何错误。
[org.jboss.as.mail.extension] (MSC service thread 1-5) L:136 JBAS015400: Bound mail session [java:jboss/mail/Default]
任何失败原因的线索?总的来说,我想知道为什么 Java-Mail 的行为不像一个普通的邮件客户端。
最佳答案
请注意您的配置或 javamail 实现有误。 只是邮件服务器拒绝来自您/您的服务器/...的命令 邮件服务器这样做的原因有很多,但大多数情况下都与防止垃圾邮件有关。
也可以在SO上查看相关线程,它们都与邮件服务器配置有关。
更多请看:
https://serverfault.com/questions/540159/remote-host-said-550-5-7-1-message-content-rejected
关于wildfly - 如何使用 Wildfly 8.1 避免电子邮件错误(550 5.7.1 命令被拒绝),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26719405/