Email Bean : Email « Servlets « Java






Email Bean

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Properties;

import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

public class EmailBean {

  //defaults
  private final static String DEFAULT_CONTENT = "Unknown content";

  private final static String DEFAULT_SUBJECT = "Unknown subject";

  private static String DEFAULT_SERVER = null;

  private static String DEFAULT_TO = null;

  private static String DEFAULT_FROM = null;
  static {
    java.util.ResourceBundle bundle = java.util.ResourceBundle
        .getBundle("com.java2s.mailDefaults");

    DEFAULT_SERVER = bundle.getString("DEFAULT_SERVER");
    DEFAULT_TO = bundle.getString("DEFAULT_TO");
    DEFAULT_FROM = bundle.getString("DEFAULT_FROM");

    System.out.println("DEFAULT_SERVER: " + DEFAULT_SERVER);
  }

  //JavaBean properties
  private String smtpHost;

  private String to;

  private String from;

  private String content;

  private String subject;

  public void sendMessage() throws Exception {

    Properties properties = System.getProperties();

    //populate the 'Properties' object with the mail
    //server address, so that the default 'Session'
    //instance can use it.
    properties.put("mail.smtp.host", smtpHost);

    Session session = Session.getDefaultInstance(properties);

    Message mailMsg = new MimeMessage(session);//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));

      } else {

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

      }

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

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

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

    } catch (Exception exc) {

      throw exc;

    }

  }//sendMessage

  private void handleMessages(HttpServletRequest request, PrintWriter out)
      throws IOException, ServletException {

    HttpSession httpSession = request.getSession();
    String user = (String) httpSession.getAttribute("user");
    String password = (String) httpSession.getAttribute("pass");
    String popAddr = (String) httpSession.getAttribute("pop");

    Store popStore = null;
    Folder folder = null;

    if (!check(popAddr))
      popAddr = EmailBean.DEFAULT_SERVER;

    try {

      if ((!check(user)) || (!check(password)))
        throw new ServletException(
            "A valid username and password is required to check email.");

      Properties properties = System.getProperties();

      Session session = Session.getDefaultInstance(properties);

      popStore = session.getStore("pop3");

      popStore.connect(popAddr, user, password);

      folder = popStore.getFolder("INBOX");

      if (!folder.exists())
        throw new ServletException(
            "An 'INBOX' folder does not exist for the user.");

      folder.open(Folder.READ_ONLY);

      Message[] messages = folder.getMessages();
      int msgLen = messages.length;

      if (msgLen == 0)
        out
            .println("<h2>The INBOX folder does not yet contain any email messages.</h2>");

      for (int i = 0; i < msgLen; i++) {
        displayMessage(messages[i], out);
        out.println("<br /><br />");
      }

    } catch (Exception exc) {

      out
          .println("<h2>Sorry, an error occurred while accessing the email messages.</h2>");
      out.println(exc.toString());

    } finally {
      try {
        if (folder != null)
          folder.close(false);

        if (popStore != null)
          popStore.close();
      } catch (Exception e) {
      }
    }
  }//handleMessages

  private void displayMessage(Message msg, PrintWriter out)
      throws MessagingException, IOException {

    if (msg != null && msg.getContent() instanceof String) {

      if (msg.getFrom()[0] instanceof InternetAddress) {
        out.println("Message received from: "
            + ((InternetAddress) msg.getFrom()[0]).getAddress()
            + "<br />");
      }
      out.println("Message received on: " + msg.getReceivedDate()
          + "<br />");
      out.println("Message content type: " + msg.getContentType()
          + "<br />");
      out.println("Message content type: " + (String) msg.getContent());
    } else {

      out
          .println("<h2>The received email message was not of a text content type.</h2>");

    }

  }//displayMessage

  public void setSmtpHost(String host) {
    if (check(host)) {
      this.smtpHost = host;
    } else {
      this.smtpHost = EmailBean.DEFAULT_SERVER;
    }
  }//setTo

  public void setTo(String to) {
    if (check(to)) {
      this.to = to;
    } else {
      this.to = EmailBean.DEFAULT_TO;
    }
  }//setTo

  public void setFrom(String from) {
    if (check(from)) {
      this.from = from;
    } else {
      this.from = EmailBean.DEFAULT_FROM;
    }
  }//setFrom

  public void setContent(String content) {
    if (check(content)) {
      this.content = content;
    } else {
      this.content = EmailBean.DEFAULT_CONTENT;
    }
  }//setContent

  public void setSubject(String subject) {
    if (check(subject)) {
      this.subject = subject;
    } else {
      this.subject = EmailBean.DEFAULT_SUBJECT;
    }
  }//setSubject

  private boolean check(String value) {

    if (value == null || value.equals(""))
      return false;

    return true;
  }
}

           
       








Related examples in the same category

1.Sending E-Mail from Servlets
2.Java servlet application
3.Email JNDI Filter
4.Servlet and email
5.Mail Accessor
6.Sending e-mail by using the JavaMail API and JDBC