EmailJndiServlet.java Source code

Java tutorial

Introduction

Here is the source code for EmailJndiServlet.java

Source

import java.io.IOException;
import java.io.PrintWriter;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import javax.mail.*;
import javax.mail.internet.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class EmailJndiServlet extends HttpServlet {

    private Session mailSession;

    public void init() throws ServletException {

        Context env = null;

        try {

            env = (Context) new InitialContext();

            mailSession = (Session) env.lookup("MyEmail");

            if (mailSession == null)
                throw new ServletException("MyEmail is an unknown JNDI object");

            //close the InitialContext
            env.close();

        } catch (NamingException ne) {

            try {
                env.close();
            } catch (NamingException nex) {
            }

            throw new ServletException(ne);

        }

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, java.io.IOException {

        response.setContentType("text/html");
        java.io.PrintWriter out = response.getWriter();
        out.println("<html><head><title>Email message sender</title></head><body>");

        String to = request.getParameter("to");

        String from = request.getParameter("from");

        String subject = request.getParameter("subject");

        String emailContent = request.getParameter("emailContent");

        try {

            sendMessage(to, from, subject, emailContent);

        } catch (Exception exc) {

            throw new ServletException(exc.getMessage());

        }

        out.println("<h2>The message was sent successfully</h2></body></html>");

        out.println("</body></html>");
        out.close();

    } //doPost

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, java.io.IOException {

        doPost(request, response);

    }

    private void sendMessage(String to, String from, String subject, String bodyContent) throws Exception {

        Message mailMsg = null;

        synchronized (mailSession) {

            mailMsg = new MimeMessage(mailSession);//a new email message
        }

        InternetAddress[] addresses = null;

        try {

            if (to != null) {

                //throws 'AddressException' if the 'to' email address
                //violates RFC822 syntax
                addresses = InternetAddress.parse(to, false);

                mailMsg.setRecipients(Message.RecipientType.TO, addresses);

            } else {

                throw new MessagingException("The mail message requires a 'To' address.");

            }

            if (from != null)
                mailMsg.setFrom(new InternetAddress(from));

            if (subject != null)
                mailMsg.setSubject(subject);

            if (bodyContent != null)
                mailMsg.setText(bodyContent);

            //Finally, send the mail message; throws a 'SendFailedException' 
            //if any of the message's recipients have an invalid adress
            Transport.send(mailMsg);

        } catch (Exception exc) {

            throw exc;
        }
    }//sendMessage

}//EmailJndiServlet