Search code examples
jakarta-mailjndijboss6.x

JBOSS JNDI look-up(mail session) ERROR


I am developing an application that connects to a java mail session configured in JBOSS. I'm only knowledgeable on how to deploy application for my servers.

In my standalone-full.xml

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

In my domain.xml. Below is configured to the profile for the server being used.

<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>

In my code.

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();

Here's the error:

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)

I have checked this guide already. https://docs.jboss.org/jbossweb/3.0.x/jndi-resources-howto.html But the web.xml get's erased once the server is turned off. So I don't think it's applicable to me.

Don't I just need to connect the mail session via JNDI then the properties are already set? Why is it attempting to connect the smtp host to localhost and port 465?


Solution

  • I was able to resolve my problem by modifying the remote-destination host and port values in my domain.xml and standalone.xml

    Previous config:

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

    Updated config:

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

    After doing that. I encountered an error with the certificates. So I downloaded an app to extract certificates from gmail and import it to my truststores and keystores. Then everything worked fine.