SendMailServlet2.java
上传用户:dinglihq
上传日期:2013-02-04
资源大小:99958k
文件大小:6k
源码类别:

Java编程

开发平台:

Java

  1. package bible.javamail;
  2. import java.io.*;
  3. import javax.servlet.*;
  4. import javax.servlet.http.*;
  5. import java.util.*;
  6. import javax.activation.*;
  7. import javax.mail.*;
  8. import javax.mail.internet.*;
  9. import javax.naming.*;
  10. /**
  11.  * Class SendMailServlet2
  12.  *
  13.  *
  14.  * @author
  15.  * @version %I%, %G%
  16.  */
  17. public class SendMailServlet2 extends HttpServlet {
  18.   private String  to          = "";
  19.   private String  cc          = "";
  20.   private String  bcc         = "";
  21.   private String  subject     = "";
  22.   private String  filename    = "";
  23.   private String  messageText = "";
  24.   private boolean isHTML;
  25.   private String  successMessage = "";
  26.   /**
  27.    * Method doGet
  28.    *
  29.    *
  30.    * @param req
  31.    * @param res
  32.    *
  33.    * @throws IOException
  34.    * @throws ServletException
  35.    *
  36.    */
  37.   public void doGet(HttpServletRequest req, HttpServletResponse res)
  38.     throws ServletException, IOException {
  39.     PrintWriter pw = res.getWriter();
  40.     res.setContentType("text/html");
  41.     pw.println("<HTML><HEAD><TITLE>Send Mail - Complex</TITLE></HEAD>");
  42.     pw.println("<BODY><H1>Send Mail - Complex</H1>");
  43.     pw.println("<FORM ACTION='sendmail2' METHOD=post><TABLE>");
  44.     pw.println("<TR><TD>To:</TD><TD><INPUT NAME=to size=60></TD></TR>");
  45.     pw.println("<TR><TD>Cc:</TD><TD><INPUT NAME=cc size=60></TD></TR>");
  46.     pw.println("<TR><TD>Bcc:</TD><TD><INPUT NAME=bcc size=60></TD></TR>");
  47.     pw.println("<TR><TD>Subject:</TD><TD><INPUT NAME=subject size=60>"
  48.                + "</TD></TR>");
  49.     pw.println("<TR><TD>Enclosure:</TD><TD>"
  50.                + "<INPUT NAME=filename size=60></TD></TR>");
  51.     pw.println("<TR><TD VALIGN>Message:</TD>");
  52.     pw.println("<TD><TEXTAREA NAME=messageText rows=10 cols=60>"
  53.                + "</TEXTAREA></TD></TR>");
  54.     pw.println("<TR><TD>HTML:</TD><TD><input type=checkbox NAME=isHTML>"
  55.                + "</TD></TR>");
  56.     pw.println("<TR><TD><INPUT TYPE=SUBMIT NAME=Submit VALUE=Submit>"
  57.                + "</TD></TR>");
  58.     pw.println("</TABLE></FORM>");
  59.     pw.println("<STRONG>" + successMessage + "</STRONG>");
  60.     pw.println("</BODY></HTML>");
  61.   }
  62.   /**
  63.    * Method doPost
  64.    *
  65.    *
  66.    * @param req
  67.    * @param res
  68.    *
  69.    * @throws IOException
  70.    * @throws ServletException
  71.    *
  72.    */
  73.   public void doPost(HttpServletRequest req, HttpServletResponse res)
  74.     throws ServletException, IOException {
  75.     to          = req.getParameter("to");
  76.     cc          = req.getParameter("cc");
  77.     bcc         = req.getParameter("bcc");
  78.     subject     = req.getParameter("subject");
  79.     filename    = req.getParameter("filename");
  80.     messageText = req.getParameter("messageText");
  81.     isHTML      = "on".equals(req.getParameter("isHTML"));
  82.     sendMessage();
  83.     doGet(req, res);
  84.   }
  85.   /**
  86.    * Method sendMessage
  87.    *
  88.    *
  89.    */
  90.   public void sendMessage() {
  91.     try {
  92.       // lookup mail session in JNDI
  93.       InitialContext context = new InitialContext();
  94.       Session        session = (Session) context.lookup("BibleMailSession");
  95.       // override mail session properties
  96.       Properties mailProps = new Properties();
  97.       mailProps.put("mail.transport.protocol", "smtp");
  98.       mailProps.put("mail.host", "xxx.xxx.xxx.xxx");
  99.       mailProps.put("mail.user", "username");
  100.       mailProps.put("mail.from", "username@company.com");
  101.       mailProps.put("mail.debug", "true");
  102.       mailProps.put("mail.smtp.auth", "true");
  103.       // get an authenticated session
  104.       MailAuthenticator mailAuth = new MailAuthenticator();
  105.       // For testing, set the values here. The user should be prompted or
  106.       // retrieved from a database or descriptor
  107.       mailAuth.setUser("username");
  108.       mailAuth.setPassword("password");
  109.       Session authSession = session.getInstance(mailProps, mailAuth);
  110.       // set message with to, subject, and message text
  111.       Message msg = new MimeMessage(authSession);
  112.       // set message with to, cc, bcc, and subject
  113.       msg.setFrom();
  114.       msg.setRecipients(Message.RecipientType.TO,
  115.                         InternetAddress.parse(to, false));
  116.       msg.setRecipients(Message.RecipientType.CC,
  117.                         InternetAddress.parse(cc, false));
  118.       msg.setRecipients(Message.RecipientType.BCC,
  119.                         InternetAddress.parse(bcc, false));
  120.       msg.setSubject(subject);
  121.       msg.setSentDate(new Date());
  122.       // set with message text via a mime multipart
  123.       Multipart    mp   = new MimeMultipart();
  124.       MimeBodyPart mbp1 = new MimeBodyPart();
  125.       if (isHTML) {
  126.         mbp1.setContent(messageText, "text/html");
  127.       } else {
  128.         mbp1.setText(messageText);
  129.       }
  130.       mp.addBodyPart(mbp1);
  131.       if (!filename.equals("")) {
  132.         MimeBodyPart   mbp2 = new MimeBodyPart();
  133.         FileDataSource fds  = new FileDataSource(filename);
  134.         mbp2.setDataHandler(new DataHandler(fds));
  135.         mbp2.setFileName(fds.getName());
  136.         mp.addBodyPart(mbp2);
  137.       }
  138.       msg.setContent(mp);
  139.       msg.saveChanges();
  140.       // get transport and send message
  141.       Transport authTransport = authSession.getTransport();
  142.       authTransport.connect();
  143.       authTransport.sendMessage(msg, msg.getAllRecipients());
  144.       authTransport.close();
  145.       successMessage = "Message sucessfully sent.";
  146.       session        = null;
  147.     } catch (Exception e) {
  148.       successMessage = e.getMessage();
  149.     }
  150.   }
  151. }
  152. /*--- Formatted in Bible Style on Thu, Sep 6, '01 ---*/
  153. /*------ Formatted by Jindent 3.24 Gold 1.02 --- http://www.jindent.de ------*/