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

JBOSS JNDI look-up(mail session) ERROR

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

在我的单机中-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 主机连接到本地主机和端口 465?

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

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

我能够通过修改 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 中提取证书并将其导入到我的信任库和密钥库中。然后一切正常。