4

我正在尝试Wildfly 8.1使用 Gmail 设置一些简单的邮件服务(用于测试)。
出于某种原因,每次我传输邮件时,Wildfly 都会尝试连接localhost而不是分配的outbound-socket

错误:

13:22:34,164 ERROR [stderr] (default task-22) com.sun.mail.util.MailConnectException: Couldn't connect to host, port: localhost, 25; timeout -1;
13:22:34,164 ERROR [stderr] (default task-22)   nested exception is:
13:22:34,165 ERROR [stderr] (default task-22)   java.net.ConnectException: Connection refused: connect
13:22:34,165 ERROR [stderr] (default task-22)   at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1984)

独立的.xml

...
<mail-session name="java:jboss/mail/gmail" debug="true" jndi-name="java:jboss/mail/gmail">
    <smtp-server outbound-socket-binding-ref="mail-smtp" ssl="true" username="user@gmail.com" password="pass"/>
</mail-session>
...
<outbound-socket-binding name="mail-smtp">
    <remote-destination host="smtp.gmail.com" port="465"/>
</outbound-socket-binding>

然后我只是尝试发送邮件:

@Stateless
public class SendMail {

@Resource(mappedName = "java:jboss/mail/gmail")
private Session mailSession;

public String send() {
    MimeMessage m = new MimeMessage(mailSession);
    try {
        m.setRecipients(Message.RecipientType.TO, "test@mail.com");
        m.setContent("Test from Wildfly","text/plain");
        Transport.send(m);//throws exception
    } catch (MessagingException e) {
        e.printStackTrace();
    }
...

我已经在注释中尝试了“ name”和“ ”,但它只是一直想连接到,甚至没有.lookup@Resourcelocalhostoutbound-socket

我错过了什么?

4

4 回答 4

1

我遇到了同样的问题,但在应用新的 Java Mail 设置后,WildFly 似乎只需要重新加载。尝试重新启动 WildFly,它应该会使用您的新设置。

于 2014-10-01T19:59:50.343 回答
1

如果重新加载不起作用。

换行

Transport.send(m);

和:

Transport transport = m.getTransport("smtp");
if (!transport.isConnected())
   transport.connect();
transport.sendMessage(m, m.getAllRecipients());
transport.close();

希望这对您有所帮助,因为它对我有所帮助。

于 2018-04-28T21:42:27.960 回答
0

您使用了错误的端口。它应该是端口 465 或 587。您仍在使用端口 25(来自错误消息)

于 2014-08-28T02:01:30.873 回答
0

只是添加我的经验,因为我刚刚遇到了同样的问题:重新启动的原因是因为您的 Session 属性为空,如果您正在动态修改它,您需要重新启动服务器以重新加载standalone.xml 配置文件。

在我的例子中,我使用了一个使用 final 属性的测试类,这使得资源注入毫无用处,只需将其删除即可解决。

顺便说一句,当您使用无状态 EJB 时,您可能需要考虑在发送电子邮件时使用异步表示法。:)

于 2015-04-22T20:06:39.697 回答