sendmailservlet2.java

来自「100多M的J2EE培训内容」· Java 代码 · 共 194 行

JAVA
194
字号
package bible.javamail;



import java.io.*;

import javax.servlet.*;
import javax.servlet.http.*;

import java.util.*;

import javax.activation.*;

import javax.mail.*;
import javax.mail.internet.*;

import javax.naming.*;


/**
 * Class SendMailServlet2
 *
 *
 * @author
 * @version %I%, %G%
 */
public class SendMailServlet2 extends HttpServlet {

  private String  to          = "";
  private String  cc          = "";
  private String  bcc         = "";
  private String  subject     = "";
  private String  filename    = "";
  private String  messageText = "";
  private boolean isHTML;
  private String  successMessage = "";

  /**
   * Method doGet
   *
   *
   * @param req
   * @param res
   *
   * @throws IOException
   * @throws ServletException
   *
   */
  public void doGet(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {

    PrintWriter pw = res.getWriter();

    res.setContentType("text/html");
    pw.println("<HTML><HEAD><TITLE>Send Mail - Complex</TITLE></HEAD>");
    pw.println("<BODY><H1>Send Mail - Complex</H1>");
    pw.println("<FORM ACTION='sendmail2' METHOD=post><TABLE>");
    pw.println("<TR><TD>To:</TD><TD><INPUT NAME=to size=60></TD></TR>");
    pw.println("<TR><TD>Cc:</TD><TD><INPUT NAME=cc size=60></TD></TR>");
    pw.println("<TR><TD>Bcc:</TD><TD><INPUT NAME=bcc size=60></TD></TR>");
    pw.println("<TR><TD>Subject:</TD><TD><INPUT NAME=subject size=60>"
               + "</TD></TR>");
    pw.println("<TR><TD>Enclosure:</TD><TD>"
               + "<INPUT NAME=filename size=60></TD></TR>");
    pw.println("<TR><TD VALIGN>Message:</TD>");
    pw.println("<TD><TEXTAREA NAME=messageText rows=10 cols=60>"
               + "</TEXTAREA></TD></TR>");
    pw.println("<TR><TD>HTML:</TD><TD><input type=checkbox NAME=isHTML>"
               + "</TD></TR>");
    pw.println("<TR><TD><INPUT TYPE=SUBMIT NAME=Submit VALUE=Submit>"
               + "</TD></TR>");
    pw.println("</TABLE></FORM>");
    pw.println("<STRONG>" + successMessage + "</STRONG>");
    pw.println("</BODY></HTML>");
  }

  /**
   * Method doPost
   *
   *
   * @param req
   * @param res
   *
   * @throws IOException
   * @throws ServletException
   *
   */
  public void doPost(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {

    to          = req.getParameter("to");
    cc          = req.getParameter("cc");
    bcc         = req.getParameter("bcc");
    subject     = req.getParameter("subject");
    filename    = req.getParameter("filename");
    messageText = req.getParameter("messageText");
    isHTML      = "on".equals(req.getParameter("isHTML"));

    sendMessage();
    doGet(req, res);
  }

  /**
   * Method sendMessage
   *
   *
   */
  public void sendMessage() {

    try {

      // lookup mail session in JNDI
      InitialContext context = new InitialContext();
      Session        session = (Session) context.lookup("BibleMailSession");

      // override mail session properties
      Properties mailProps = new Properties();

      mailProps.put("mail.transport.protocol", "smtp");
      mailProps.put("mail.host", "xxx.xxx.xxx.xxx");
      mailProps.put("mail.user", "username");
      mailProps.put("mail.from", "username@company.com");
      mailProps.put("mail.debug", "true");
      mailProps.put("mail.smtp.auth", "true");

      // get an authenticated session
      MailAuthenticator mailAuth = new MailAuthenticator();

      // For testing, set the values here. The user should be prompted or
      // retrieved from a database or descriptor
      mailAuth.setUser("username");
      mailAuth.setPassword("password");

      Session authSession = session.getInstance(mailProps, mailAuth);

      // set message with to, subject, and message text
      Message msg = new MimeMessage(authSession);

      // set message with to, cc, bcc, and subject
      msg.setFrom();
      msg.setRecipients(Message.RecipientType.TO,
                        InternetAddress.parse(to, false));
      msg.setRecipients(Message.RecipientType.CC,
                        InternetAddress.parse(cc, false));
      msg.setRecipients(Message.RecipientType.BCC,
                        InternetAddress.parse(bcc, false));
      msg.setSubject(subject);
      msg.setSentDate(new Date());

      // set with message text via a mime multipart
      Multipart    mp   = new MimeMultipart();
      MimeBodyPart mbp1 = new MimeBodyPart();

      if (isHTML) {
        mbp1.setContent(messageText, "text/html");
      } else {
        mbp1.setText(messageText);
      }

      mp.addBodyPart(mbp1);

      if (!filename.equals("")) {
        MimeBodyPart   mbp2 = new MimeBodyPart();
        FileDataSource fds  = new FileDataSource(filename);

        mbp2.setDataHandler(new DataHandler(fds));
        mbp2.setFileName(fds.getName());
        mp.addBodyPart(mbp2);
      }

      msg.setContent(mp);
      msg.saveChanges();

      // get transport and send message
      Transport authTransport = authSession.getTransport();

      authTransport.connect();
      authTransport.sendMessage(msg, msg.getAllRecipients());
      authTransport.close();

      successMessage = "Message sucessfully sent.";
      session        = null;
    } catch (Exception e) {
      successMessage = e.getMessage();
    }
  }
}


/*--- Formatted in Bible Style on Thu, Sep 6, '01 ---*/


/*------ Formatted by Jindent 3.24 Gold 1.02 --- http://www.jindent.de ------*/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?