JBOSS JNDI查找(邮件会话)错误

时间:2017-11-10 16:08:58

标签: javamail jndi jboss6.x

我正在开发一个连接到JBOSS中配置的java邮件会话的应用程序。我只知道如何为我的服务器部署应用程序。

在我的standalone-full.xml

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

在我的domain.xml中。下面配置为正在使用的服务器的配置文件。

<subsystem xmlns="urn:jboss:domain:mail:1.2">
 <mail-session name="default" jndi-name="java:jboss/mail/Default">
  <smtp-server outbound-socket-binding-ref="mail-smtp"/>
 </mail-session>
 <mail-session name="EmailFilenet" jndi-name="java:jboss/mail/Email">
  <smtp-server ssl="true" outbound-socket-binding-ref="mail-smtp">
    <login name="email" password="pass"/>
  </smtp-server>
 </mail-session>
</subsystem>

在我的代码中。

Context ictx = new InitialContext();     
mailSession = (Session) ictx.lookup("java:jboss/mail/Email");
MimeMessage message = new MimeMessage(mailSession);
message.setSubject(subject);
message.setRecipients(javax.mail.Message.RecipientType.TO,
            javax.mail.internet.InternetAddress.parse(email, false));
message.setText(body);
message.saveChanges();

这是错误:

23:44:10,025 INFO  [stdout] (Thread-5 (HornetQ-client-global-threads-
473161222)) javax.mail.MessagingException: Could not connect to SMTP host: 
localhost, port: 465;

23:44:10,025 INFO  [stdout] (Thread-5 (HornetQ-client-global-threads-
473161222))   nested exception is:

23:44:10,025 INFO  [stdout] (Thread-5 (HornetQ-client-global-threads-
473161222))     java.net.ConnectException: Connection refused: connect

23:44:10,025 INFO  [stdout] (Thread-5 (HornetQ-client-global-threads-
473161222))     at 
com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1972)

23:44:10,025 INFO  [stdout] (Thread-5 (HornetQ-client-global-threads-
473161222))     at 
com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642)

23:44:10,025 INFO  [stdout] (Thread-5 (HornetQ-client-global-threads-
473161222))     at javax.mail.Service.connect(Service.java:295)

23:44:10,025 INFO  [stdout] (Thread-5 (HornetQ-client-global-threads-
473161222))     at javax.mail.Service.connect(Service.java:176)

23:44:10,025 INFO  [stdout] (Thread-5 (HornetQ-client-global-threads-
473161222))     at javax.mail.Service.connect(Service.java:196)

我已经检查了这个指南。 https://docs.jboss.org/jbossweb/3.0.x/jndi-resources-howto.html 但是一旦服务器关闭,web.xml就会被删除。所以我认为它不适用于我。

我不是只需要通过JNDI连接邮件会话,那么属性已经设置好了吗?为什么尝试将smtp主机连接到localhost和端口465?

2 个答案:

答案 0 :(得分:0)

它正在尝试连接到localhost,因为你告诉它服务器在localhost(<remote-destination host="localhost")上。

它正在尝试连接到端口465,因为您说您想使用SSL(<smtp-server ssl="true")。

答案 1 :(得分:0)

我能够通过修改domain.xml和standalone.xml中的远程目标主机和端口值来解决我的问题

上一个配置:

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

更新了配置:

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

这样做之后。我遇到了证书错误。所以我下载了一个应用程序来从gmail中提取证书并将其导入我的信任库和密钥库。然后一切都很好。