Firstly, add the ourbound sockets for GMail SMTP and IMAP to standalone.xml
:
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}"> ... <outbound-socket-binding name="mail-smtp"> <remote-destination host="smtp.gmail.com" port="465"/> </outbound-socket-binding> <outbound-socket-binding name="mail-imap"> <remote-destination host="imap.gmail.com" port="993"/> </outbound-socket-binding> <outbound-socket-binding name="mail-smtp-25000"> <remote-destination host="localhost" port="25000"/> </outbound-socket-binding> ... </socket-binding-group> </server>
Then add the mail-session
element:
<subsystem xmlns="urn:jboss:domain:mail:2.0"> <mail-session name="gmail" jndi-name="java:jboss/mail/Gmail"> <smtp-server outbound-socket-binding-ref="mail-smtp" ssl="true" username="${gmail.username}" password="${gmail.password}"/> <custom-server name="imap" outbound-socket-binding-ref="mail-imap" ssl="true" username="${gmail.username}" password="${gmail.password}"> <property name="connectiontimeout" value="30000"/> <property name="timeout" value="30000"/> </custom-server> </mail-session> </subsystem>
Restart.
Now, well try the connection, using the following servlet:
package jollobajano.sendmail; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.WebServlet; import javax.mail.Session; import javax.mail.Message; import javax.mail.Transport; import javax.mail.Address; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import javax.annotation.Resource; @WebServlet(value="/mail") public class SendmailServlet extends HttpServlet { @Resource(mappedName="java:jboss/mail/Gmail") private Session mailSession; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { { PrintWriter out=response.getWriter(); try { MimeMessage m = new MimeMessage(mailSession); Address from = new InternetAddress("AN EMAIL ADDRESS"); Address[] to = new InternetAddress[] {new InternetAddress("ANOTHER EMAIL ADDRESS") }; m.setFrom(from); m.setRecipients(Message.RecipientType.TO, to); m.setSubject("JBoss AS 7 Mail"); m.setSentDate(new java.util.Date()); m.setContent("Mail sent from JBoss AS 7","text/plain; charset=utf-8"); Transport.send(m); out.println("Mail sent!"); } catch (javax.mail.MessagingException e) { e.printStackTrace(); out.println("Error in Sending Mail: "+e); } } } }