Subversion Repositories javautils

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Copyright 2001-2007 Sun Microsystems, Inc. All Rights Reserved.
  3.  *
  4.  * Redistribution and use in source and binary forms, with or without
  5.  * modification, are permitted provided that the following conditions
  6.  * are met:
  7.  *
  8.  *   - Redistributions of source code must retain the above copyright
  9.  *     notice, this list of conditions and the following disclaimer.
  10.  *
  11.  *   - Redistributions in binary form must reproduce the above copyright
  12.  *     notice, this list of conditions and the following disclaimer in the
  13.  *     documentation and/or other materials provided with the distribution.
  14.  *
  15.  *   - Neither the name of Sun Microsystems nor the names of its
  16.  *     contributors may be used to endorse or promote products derived
  17.  *     from this software without specific prior written permission.
  18.  *
  19.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
  20.  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
  21.  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  22.  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  23.  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  24.  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  25.  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  26.  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  27.  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  28.  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  29.  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  30.  */
  31.  
  32. package demo;
  33.  
  34. import java.util.*;
  35. import java.net.*;
  36. import javax.mail.*;
  37. import javax.mail.internet.*;
  38. import javax.servlet.jsp.*;
  39. import javax.servlet.jsp.tagext.*;
  40.  
  41. /**
  42.  * Custom tag for sending messages.
  43.  */
  44. public class SendTag extends BodyTagSupport {
  45.     private String body;
  46.     private String cc;
  47.     private String host;
  48.     private String recipients;
  49.     private String sender;
  50.     private String subject;
  51.  
  52.     /**
  53.      * host attribute setter method.
  54.      */
  55.     public void setHost(String host) {
  56.         this.host = host;
  57.     }
  58.    
  59.     /**
  60.      * recipient attribute setter method.
  61.      */
  62.     public void setRecipients(String recipients) {
  63.         this.recipients = recipients;
  64.     }
  65.  
  66.     /**
  67.      * sender attribute setter method.
  68.      */
  69.     public void setSender(String sender) {
  70.         this.sender = sender;
  71.     }
  72.  
  73.     /**
  74.      * cc attribute setter method.
  75.      */
  76.     public void setCc(String cc) {
  77.         this.cc = cc;
  78.     }
  79.  
  80.     /**
  81.      * subject attribute setter method.
  82.      */
  83.     public void setSubject(String subject) {
  84.         this.subject = subject;
  85.     }
  86.  
  87.     /**
  88.      * Method for processing the end of the tag.
  89.      */
  90.     public int doEndTag() throws JspException {
  91.         Properties props = System.getProperties();
  92.        
  93.         try {
  94.             if (host != null)
  95.                 props.put("mail.smtp.host", host);
  96.             else if (props.getProperty("mail.smtp.host") == null)
  97.                 props.put("mail.smtp.host", InetAddress.getLocalHost().
  98.                     getHostName());
  99.         } catch (Exception ex) {
  100.             throw new JspException(ex.getMessage());
  101.         }
  102.         Session session = Session.getDefaultInstance(props, null);
  103.                
  104.         Message msg = new MimeMessage(session);
  105.         InternetAddress[] toAddrs = null, ccAddrs = null;
  106.  
  107.         try {
  108.             if (recipients != null) {
  109.                 toAddrs = InternetAddress.parse(recipients, false);
  110.                 msg.setRecipients(Message.RecipientType.TO, toAddrs);
  111.             } else
  112.                 throw new JspException("No recipient address specified");
  113.  
  114.             if (sender != null)
  115.                 msg.setFrom(new InternetAddress(sender));
  116.             else
  117.                 throw new JspException("No sender address specified");
  118.  
  119.             if (cc != null) {
  120.                 ccAddrs = InternetAddress.parse(cc, false);
  121.                 msg.setRecipients(Message.RecipientType.CC, ccAddrs);
  122.             }
  123.  
  124.             if (subject != null)
  125.                 msg.setSubject(subject);
  126.  
  127.             if ((body = getBodyContent().getString()) != null)
  128.                 msg.setText(body);
  129.             else
  130.                 msg.setText("");
  131.  
  132.             Transport.send(msg);
  133.        
  134.         } catch (Exception ex) {
  135.             throw new JspException(ex.getMessage());
  136.         }
  137.  
  138.         return(EVAL_PAGE);
  139.    }
  140. }
  141.  
  142.