我正在开发一个连接到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?
答案 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中提取证书并将其导入我的信任库和密钥库。然后一切都很好。