cocoon-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From vgritse...@apache.org
Subject svn commit: r155037 - in cocoon/trunk: ./ src/blocks/mail/java/org/apache/cocoon/acting/ src/blocks/mail/java/org/apache/cocoon/components/language/markup/xsp/java/ src/blocks/mail/java/org/apache/cocoon/mail/ src/blocks/mail/java/org/apache/cocoon/mail/transformation/ src/blocks/mail/mocks/javax/mail/ src/blocks/mail/mocks/javax/mail/internet/ src/blocks/mail/samples/
Date Wed, 23 Feb 2005 17:59:32 GMT
Author: vgritsenko
Date: Wed Feb 23 09:59:29 2005
New Revision: 155037

URL: http://svn.apache.org/viewcvs?view=rev&rev=155037
Log:
Mail Block: Add support for replyTo

Modified:
    cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/acting/Sendmail.java
    cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/acting/SendmailAction.java
    cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/components/language/markup/xsp/java/sendmail.xsl
    cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/mail/MailMessageSender.java
    cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/mail/MailSender.java
    cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/mail/transformation/SendMailTransformer.java
    cocoon/trunk/src/blocks/mail/mocks/javax/mail/Message.java
    cocoon/trunk/src/blocks/mail/mocks/javax/mail/internet/MimeMessage.java
    cocoon/trunk/src/blocks/mail/samples/samples.xml
    cocoon/trunk/status.xml

Modified: cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/acting/Sendmail.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/acting/Sendmail.java?view=diff&r1=155036&r2=155037
==============================================================================
--- cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/acting/Sendmail.java (original)
+++ cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/acting/Sendmail.java Wed Feb 23 09:59:29
2005
@@ -37,27 +37,8 @@
 import javax.mail.internet.AddressException;
 
 /**
- * The Sendmail action class sends email.
- * The action minimally needs four parameters:
- *
- * <dl>
- *   <dt>from</dt>
- *   <dd>the email address the mail appears to be from</dd>
- *   <dt>to</dt>
- *   <dd>the email address the mail it sent to. This can
- *       be multiple addresses separated with commas.</dd>
- *   <dt>subject</dt>
- *   <dd>the subject line of the email</dd>
- *   <dt>src</dt>
- *   <dd>A url specifying the source of the text body of the email</dd>
- *   <dt>srcMimeType</dt>
- *   <dd>The optional Mime Type of the  source of the text body of the email
- *       if you specified src</dd>
- *   <dt>body</dt>
- *   <dd>the text body of the email, if src is specified, body will be ignored</dd>
- * </dl>
- *
- * The following optionals parameters can be used:
+ * The Sendmail action class sends email. Action supports following
+ * parameters:
  *
  * <dl>
  *   <dt>smtp-host</dt>
@@ -69,14 +50,31 @@
  *   <dt>smtp-password</dt>
  *   <dd>The smtp user's password. If smtp-user and smtp-host not
  *       specified, default from cocoon.xconf will be used.</dd>
+ *   <dt>from</dt>
+ *   <dd>the email address the mail appears to be from</dd>
+ *   <dt>to</dt>
+ *   <dd>the email address(es) the mail it sent to. This can
+ *       be multiple addresses separated with commas.</dd>
+ *   <dt>replyTo</dt>
+ *   <dd>the email address(es) replies should be sent to. This can
+ *       be multiple addresses separated with commas.</dd>
  *   <dt>cc</dt>
- *   <dd>an email address of someone, who should receive a
+ *   <dd>an email address(es) of someone, who should receive a
  *       carbon copy. This can also be a list of multiple addresses
  *       separated by commas.</dd>
  *   <dt>bcc</dt>
- *   <dd>an email address of someone, who should receive a black
+ *   <dd>an email address(es) of someone, who should receive a black
  *       carbon copy. This can also be a list of multiple addresses
  *       separated by commas.</dd>
+ *   <dt>subject</dt>
+ *   <dd>the subject line of the email</dd>
+ *   <dt>src</dt>
+ *   <dd>A url specifying the source of the text body of the email</dd>
+ *   <dt>srcMimeType</dt>
+ *   <dd>The optional Mime Type of the  source of the text body of the email
+ *       if you specified src</dd>
+ *   <dt>body</dt>
+ *   <dd>the text body of the email, if src is specified, body will be ignored</dd>
  *   <dt>charset</dt>
  *   <dd>the character set, which should be used the encode the body text.
  *       This parameter is only used, if no attachements are send.</dd>
@@ -92,6 +90,10 @@
  * </dl>
  *
  * <p>
+ * Minimally, <code>from</code>, <code>to</code>, <code>body</code>
parameters
+ * should be specified. Rest of parameters are optional.</p>
+ *
+ * <p>
  * The class loads all of these parameters from the sitemap, except the
  * attachements, which may come from file upload request parameters.
  * Note it's strongly recommended that the to, cc and bcc addresses be
@@ -163,10 +165,6 @@
 
         MailSender mms = null;
         try {
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("act start");
-            }
-
             Request request = ObjectModelHelper.getRequest(objectModel);
 
             // FIXME Remove support of old smtphost parameter
@@ -198,6 +196,9 @@
             if (parameters.isParameter("to")) {
                 mms.setTo(parameters.getParameter("to", null));
             }
+            if (parameters.isParameter("replyTo")) {
+                mms.setReplyTo(parameters.getParameter("replyTo", null));
+            }
             if (parameters.isParameter("cc")) {
                 mms.setCc(parameters.getParameter("cc", null));
             }
@@ -244,10 +245,6 @@
             }
 
             mms.send();
-
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("act stop");
-            }
 
             success = true;
             status = new HashMap(3);

Modified: cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/acting/SendmailAction.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/acting/SendmailAction.java?view=diff&r1=155036&r2=155037
==============================================================================
--- cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/acting/SendmailAction.java (original)
+++ cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/acting/SendmailAction.java Wed Feb
23 09:59:29 2005
@@ -32,7 +32,9 @@
  *   <dt>from</dt>
  *   <dd>the email address the mail appears to be from</dd>
  *   <dt>to</dt>
- *   <dd>the email address the mail it sent to</dd>
+ *   <dd>the email address(es) the mail it sent to</dd>
+ *   <dt>replyTo</dt>
+ *   <dd>the email address(es) replies should be sent to</dd>
  *   <dt>subject</dt>
  *   <dd>the subject of the email</dd>
  *   <dt>body</dt>
@@ -42,8 +44,7 @@
  * Action attempts to get all of these parameters from the sitemap, but
  * if they do not exist there it will read them from the request parameters.
  *
- * <p>It also supports all of the {@link Sendmail} action sitemap parameters.
- * </p>
+ * <p>It also supports all of the {@link Sendmail} action sitemap parameters</p>
  *
  * @deprecated Please use the {@link Sendmail Sendmail} action instead.
  * @author <a href="mailto:balld@apache.org">Donald Ball</a>
@@ -65,6 +66,9 @@
         }
         if (!parameters.isParameter("to")) {
             parameters.setParameter("to", request.getParameter("to"));
+        }
+        if (!parameters.isParameter("replyTo")) {
+            parameters.setParameter("replyTo", request.getParameter("replyTo"));
         }
         if (!parameters.isParameter("subject")) {
             parameters.setParameter("subject", request.getParameter("subject"));

Modified: cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/components/language/markup/xsp/java/sendmail.xsl
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/components/language/markup/xsp/java/sendmail.xsl?view=diff&r1=155036&r2=155037
==============================================================================
--- cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/components/language/markup/xsp/java/sendmail.xsl
(original)
+++ cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/components/language/markup/xsp/java/sendmail.xsl
Wed Feb 23 09:59:29 2005
@@ -51,6 +51,11 @@
         <xsl:with-param name="content" select="sendmail:to"/>
       </xsl:call-template>
     </xsl:variable>
+    <xsl:variable name="reply-to">
+      <xsl:call-template name="get-nested-string">
+        <xsl:with-param name="content" select="sendmail:reply-to"/>
+      </xsl:call-template>
+    </xsl:variable>
     <xsl:variable name="subject">
       <xsl:call-template name="get-nested-string">
         <xsl:with-param name="content" select="sendmail:subject"/>
@@ -114,9 +119,12 @@
         </xsl:when>
       </xsl:choose>
 
-        _sendmail_mms.setTo(String.valueOf(<xsl:copy-of select="$to"/>));
         _sendmail_mms.setSubject(String.valueOf(<xsl:copy-of select="$subject"/>));
         _sendmail_mms.setFrom(String.valueOf(<xsl:copy-of select="$from"/>));
+        _sendmail_mms.setTo(String.valueOf(<xsl:copy-of select="$to"/>));
+      <xsl:if test="sendmail:reply-to">
+        _sendmail_mms.setReplyTo(String.valueOf(<xsl:copy-of select="$reply-to"/>));
+      </xsl:if>
       <xsl:if test="sendmail:cc">
         _sendmail_mms.setCc(String.valueOf(<xsl:copy-of select="$cc"/>));
       </xsl:if>

Modified: cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/mail/MailMessageSender.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/mail/MailMessageSender.java?view=diff&r1=155036&r2=155037
==============================================================================
--- cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/mail/MailMessageSender.java (original)
+++ cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/mail/MailMessageSender.java Wed Feb
23 09:59:29 2005
@@ -59,7 +59,7 @@
  * A helper class used by the {@link org.apache.cocoon.acting.Sendmail}
  * and the <code>sendmail.xsl</code> logicsheet for sending an email message.
  *
- * <h3>Parameters</h3>
+ * <h3>Configuration</h3>
  * <table><tbody>
  * <tr><th>smtp-host</th><td>SMTP server to use sending mail.</td><td>opt</td><td>String</td><td><code>localhost</code></td></tr>
  * <tr><th>smtp-user</th><td>User name for authentication</td><td>opt</td><td>String</td></tr>
@@ -85,6 +85,7 @@
 
     private String from;
     private String to;
+    private String replyTo;
     private String cc;
     private String bcc;
     private String subject;
@@ -282,7 +283,6 @@
      */
     public void send(org.apache.cocoon.environment.SourceResolver resolver)
     throws AddressException, MessagingException {
-
         // resolver is automatically down-casted
         doSend(resolver);
     }
@@ -294,13 +294,13 @@
         final MimeMessage message = new MimeMessage(this.session);
 
         if (this.from == null) {
-            throw new AddressException("no from address");
+            throw new AddressException("No from address");
         } else {
             try {
                 message.setFrom(new InternetAddress(this.from));
             } catch (AddressException e) {
-                throw new AddressException(
-                    "invalid from address: " + this.from + ": " + e.getMessage());
+                throw new AddressException("Invalid from address: " + this.from + ": " +
+                                           e.getMessage());
             }
         }
 
@@ -311,8 +311,17 @@
                 message.setRecipients(RecipientType.TO,
                                       InternetAddress.parse(this.to));
             } catch (AddressException e) {
-                throw new AddressException(
-                    "invalid to address: " + this.to + ": " + e.getMessage());
+                throw new AddressException("Invalid to address: " + this.to + ": " +
+                                           e.getMessage());
+            }
+        }
+
+        if (this.replyTo != null) {
+            try {
+                message.setReplyTo(InternetAddress.parse(this.replyTo));
+            } catch (AddressException e) {
+                throw new AddressException("Invalid replyTo address: " + this.replyTo + ":
" +
+                                           e.getMessage());
             }
         }
 
@@ -321,8 +330,8 @@
                 message.setRecipients(RecipientType.CC,
                                       InternetAddress.parse(this.cc));
             } catch (AddressException e) {
-                throw new AddressException(
-                    "invalid cc address: " + this.cc + ": " + e.getMessage());
+                throw new AddressException("Invalid cc address: " + this.cc + ": " +
+                                           e.getMessage());
             }
         }
 
@@ -331,8 +340,8 @@
                 message.setRecipients(RecipientType.BCC,
                                       InternetAddress.parse(this.bcc));
             } catch (AddressException e) {
-                throw new AddressException(
-                    "invalid bcc address: " + this.bcc + ": " + e.getMessage());
+                throw new AddressException("Invalid bcc address: " + this.bcc + ": " +
+                                           e.getMessage());
             }
         }
 
@@ -516,6 +525,20 @@
     public void setTo(String to) {
         if (!("".equals(to) || "null".equals(to))) {
             this.to = to.trim();
+        }
+    }
+
+    /**
+     * Sets the reply-to address(es) for the message. The address
+     * is in the format, that
+     * {@link javax.mail.internet.InternetAddress#parse(String)} can handle
+     * (one or more email addresses separated by a commas).
+     * @param replyTo the address(es) that replies should be sent to
+     * @see javax.mail.internet.InternetAddress#parse(String)
+     */
+    public void setReplyTo(String replyTo) {
+        if (!("".equals(replyTo) || "null".equals(replyTo))) {
+            this.replyTo = replyTo.trim();
         }
     }
 

Modified: cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/mail/MailSender.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/mail/MailSender.java?view=diff&r1=155036&r2=155037
==============================================================================
--- cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/mail/MailSender.java (original)
+++ cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/mail/MailSender.java Wed Feb 23 09:59:29
2005
@@ -66,6 +66,16 @@
     void setTo(String to);
 
     /**
+     * Sets the reply-to address(es) for the message. The address
+     * is in the format, that
+     * {@link javax.mail.internet.InternetAddress#parse(String)} can handle
+     * (one or more email addresses separated by a commas).
+     * @param replyTo the address(es) that replies should be sent to
+     * @see javax.mail.internet.InternetAddress#parse(String)
+     */
+    void setReplyTo(String replyTo);
+
+    /**
      * Sets the address(es), which should receive a carbon copy of the
      * message. The address is in the format, that
      * {@link javax.mail.internet.InternetAddress#parse(String)} can handle

Modified: cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/mail/transformation/SendMailTransformer.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/mail/transformation/SendMailTransformer.java?view=diff&r1=155036&r2=155037
==============================================================================
--- cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/mail/transformation/SendMailTransformer.java
(original)
+++ cocoon/trunk/src/blocks/mail/java/org/apache/cocoon/mail/transformation/SendMailTransformer.java
Wed Feb 23 09:59:29 2005
@@ -190,6 +190,7 @@
     public static final String ELEMENT_SMTPHOST           = "smtphost";
     public static final String ELEMENT_MAILFROM           = "from";
     public static final String ELEMENT_MAILTO             = "to";
+    public static final String ELEMENT_REPLYTO            = "reply-to";
     public static final String ELEMENT_MAILSUBJECT        = "subject";
     public static final String ELEMENT_MAILBODY           = "body";
     public static final String ELEMENT_ATTACHMENT         = "attachment";
@@ -213,6 +214,7 @@
     protected static final int MODE_BODY               = 5;
     protected static final int MODE_ATTACHMENT         = 6;
     protected static final int MODE_ATTACHMENT_CONTENT = 7;
+    protected static final int MODE_REPLY_TO           = 8;
 
     /*
      * constants, related to parameter from request
@@ -220,6 +222,7 @@
     public final static String PARAM_SMTPHOST    = "smtphost";
     public final static String PARAM_FROM        = "from";
     public final static String PARAM_TO          = "to";
+    public final static String PARAM_REPLY_TO    = "reply-to";
     public final static String PARAM_SUBJECT     = "subject";
     public final static String PARAM_BODY        = "body";
     public final static String PARAM_SENDPARTIAL = "sendpartial";
@@ -229,7 +232,9 @@
      * communication parameters, which will be used to send mails
      */
     protected List                 toAddresses;
+    protected List                 replyToAddresses;
     protected List                 defaultToAddresses;
+    protected List                 defaultReplyToAddresses;
     protected List                 attachments;
     protected String               subject;
     protected String               body;
@@ -277,15 +282,15 @@
         this.contextPath = this.request.getContextPath();
         this.sendPartial = par.getParameterAsBoolean(PARAM_SENDPARTIAL, true);
 
-        if ( this.getLogger().isDebugEnabled() ) {
-            this.getLogger().debug("overwritten by Transformer-Parameters in Pipeline");
-            this.getLogger().debug("overwritten Parameters=" + mailHost + ":" +
-                                   fromAddress);
+        if (getLogger().isDebugEnabled()) {
+            getLogger().debug("Using host " + mailHost + ", from address " + fromAddress);
         }
 
         this.attachments = new ArrayList();
         this.defaultToAddresses = new ArrayList();
         appendToAddress(this.defaultToAddresses, par.getParameter(PARAM_TO, ""));
+        this.defaultReplyToAddresses = new ArrayList();
+        appendToAddress(this.defaultReplyToAddresses, par.getParameter(PARAM_REPLY_TO, ""));
 
   	    this.subject = par.getParameter(PARAM_SUBJECT, null);
    	    this.body = par.getParameter(PARAM_BODY, null);
@@ -296,27 +301,29 @@
      */
     public void startTransformingElement(String uri, String name, String raw,
                                          Attributes attr)
-                                  throws SAXException {
+    throws SAXException {
         if (name.equals(ELEMENT_SENDMAIL)) {
             // Clean from possible previous usage
             this.toAddresses = new ArrayList(this.defaultToAddresses);
+            this.replyToAddresses = new ArrayList(this.defaultReplyToAddresses);
             this.attachments.clear();
         } else if (name.equals(ELEMENT_SMTPHOST)) {
-            this.startTextRecording();
+            startTextRecording();
             this.mode = MODE_SMTPHOST;
         } else if (name.equals(ELEMENT_MAILFROM)) {
-            //this.fromAddress = attr.getValue(ELEMENT_MAILFROM);
-            this.startTextRecording();
+            startTextRecording();
             this.mode = MODE_FROM;
         } else if (name.equals(ELEMENT_MAILTO)) {
-            this.startTextRecording();
+            startTextRecording();
             this.mode = MODE_TO;
+        } else if (name.equals(ELEMENT_REPLYTO)) {
+            startTextRecording();
+            this.mode = MODE_REPLY_TO;
         } else if (name.equals(ELEMENT_MAILSUBJECT)) {
-            this.startTextRecording();
+            startTextRecording();
             this.mode = MODE_SUBJECT;
         } else if (name.equals(ELEMENT_MAILBODY)) {
             String strBody = attr.getValue("src");
-
             if (strBody != null) {
                 this.bodyURI = strBody;
             }
@@ -328,7 +335,7 @@
                 this.bodyMimeType = DEFAULT_BODY_MIMETYPE;
             }
 
-            this.startTextRecording();
+            startTextRecording();
             this.mode = MODE_BODY;
         } else if (name.equals(ELEMENT_ATTACHMENT)) {
             this.attachmentDescriptor = new AttachmentDescriptor(attr.getValue("name"),
@@ -337,12 +344,11 @@
                                                                  attr.getValue("url"));
             this.mode = MODE_ATTACHMENT;
         } else if (name.equals(ELEMENT_ATTACHMENT_CONTENT)) {
-            this.startSerializedXMLRecording(new Properties());
+            startSerializedXMLRecording(new Properties());
             this.mode = MODE_ATTACHMENT_CONTENT;
         } else {
-            throw new SAXException("Unknown element " + name);
+            throw new SAXException("Unknown element <" + name + ">");
         }
-
     }
 
     /* (non-Javadoc)
@@ -351,29 +357,30 @@
     public void endTransformingElement(String uri, String name, String raw)
     throws SAXException, ProcessingException {
         if (name.equals(ELEMENT_SENDMAIL)) {
-            if (this.getLogger().isInfoEnabled()) {
-                this.getLogger().info("Mail contents- Subject: " +
-                                      this.subject + "\n" + "Body: " +
-                                      this.body);
+            if (getLogger().isInfoEnabled()) {
+                getLogger().info("Mail Subject: " + this.subject + "\n" +
+                                 "Body: " + this.body);
             }
 
-            this.sendMail();
+            sendMail();
         } else if (name.equals(ELEMENT_SMTPHOST) ) {
-            this.mailHost = this.endTextRecording();
+            this.mailHost = endTextRecording();
             this.mode     = MODE_NONE;
         } else if (name.equals(ELEMENT_MAILFROM)) {
-            this.fromAddress = this.endTextRecording();
+            this.fromAddress = endTextRecording();
             this.mode        = MODE_NONE;
         } else if (name.equals(ELEMENT_MAILTO)) {
-            this.toAddresses.add(this.endTextRecording());
+            this.toAddresses.add(endTextRecording());
+            this.mode = MODE_NONE;
+        } else if (name.equals(ELEMENT_REPLYTO)) {
+            this.replyToAddresses.add(endTextRecording());
             this.mode = MODE_NONE;
         } else if (name.equals(ELEMENT_MAILSUBJECT)) {
-            String strSubject = this.endTextRecording();
-
+            String strSubject = endTextRecording();
             if (strSubject != null) {
                 this.subject = strSubject;
             } else {
-                this.getLogger().debug("Mail-Subject not available");
+                getLogger().debug("Mail: No Subject");
             }
 
             this.mode = MODE_NONE;
@@ -382,16 +389,15 @@
             this.attachmentDescriptor = null;
             this.mode                 = MODE_NONE;
         } else if (name.equals(ELEMENT_ATTACHMENT_CONTENT)) {
-            this.attachmentDescriptor.setContent(this.endSerializedXMLRecording());
+            this.attachmentDescriptor.setContent(endSerializedXMLRecording());
             this.mode = MODE_NONE;
         } else if (name.equals(ELEMENT_MAILBODY)) {
             String strB = null;
-
             try {
-                strB = this.endTextRecording();
+                strB = endTextRecording();
             } catch (Exception e) {
-                if (this.getLogger().isDebugEnabled()) {
-                    this.getLogger().debug("No Body as String in config-file available");
+                if (getLogger().isDebugEnabled()) {
+                    getLogger().debug("Mail: No Body as String in config-file available");
                 }
             }
 
@@ -401,13 +407,12 @@
 
             this.mode = MODE_NONE;
         } else {
-            throw new SAXException("Unknown element " + name);
+            throw new SAXException("Unknown element <" + name + ">");
         }
     }
 
     private static void appendToAddress(List addresses, String s) {
         StringTokenizer t = new StringTokenizer(s.trim(), ";");
-
         while (t.hasMoreElements()) {
             addresses.add(t.nextToken());
         }
@@ -415,9 +420,8 @@
 
     /**
      *
-     * @throws SAXException
      */
-    private void sendMail() throws SAXException {
+    private void sendMail() {
         try {
             Properties props = new Properties();
             props.put("mail.smtp.host", this.mailHost);
@@ -440,10 +444,8 @@
                 return;
             }
 
-            Session   session = Session.getDefaultInstance(props, null);
-            Transport trans = null;
-
-            trans = session.getTransport("smtp");
+            Session session = Session.getDefaultInstance(props, null);
+            Transport trans = session.getTransport("smtp");
             trans.connect();
 
             this.smtpMessage = setUpMessage(session);
@@ -455,18 +457,18 @@
                 for (int i = 0; i < this.toAddresses.size(); i++) {
                     List v = new ArrayList(1);
                     v.add(this.toAddresses.get(i));
-                    this.sendMail(v, trans);
+                    sendMail(v, trans);
                 }
             } else {
-                this.sendMail(this.toAddresses, trans);
+                sendMail(this.toAddresses, trans);
             }
 
             trans.close();
             super.sendEndElementEventNS(ELEMENT_RESULT);
-	        this.ignoreHooksCount--;
-        } catch (Exception sE) {
-            this.getLogger().error("sendMail-Error", sE);
-            this.sendExceptionElement(sE);
+            this.ignoreHooksCount--;
+        } catch (Exception e) {
+            getLogger().error("Exception sending mail", e);
+            sendExceptionElement(e);
         }
     }
 
@@ -487,14 +489,12 @@
             InternetAddress[] iaArr = SendMailTransformer.getAddresses(iA);
             this.smtpMessage.setRecipients(Message.RecipientType.TO, iaArr);
             trans.sendMessage(this.smtpMessage, iaArr);
-        } catch (SendFailedException sfEx) {
-            this.getLogger().error("Exception during sending of mail", sfEx);
-
-            Address[] adr = sfEx.getInvalidAddresses();
+        } catch (SendFailedException e) {
+            getLogger().error("Exception during sending of mail", e);
 
+            Address[] adr = e.getInvalidAddresses();
             for (int isfEx = 0; isfEx < iA.length; isfEx++) {
                 String tmpAddress = iA[isfEx].getAddress().getAddress();
-
                 for (int sei = 0; sei < adr.length; sei++) {
                     if (((InternetAddress) adr[sei]).getAddress()
                              .equalsIgnoreCase(tmpAddress)) {
@@ -503,11 +503,9 @@
                 }
             }
 
-            Address[] ad = sfEx.getValidUnsentAddresses();
-
+            Address[] ad = e.getValidUnsentAddresses();
             for (int isfEx = 0; isfEx < iA.length; isfEx++) {
                 String tmpAddress = iA[isfEx].getAddress().getAddress();
-
                 for (int sei = 0; sei < ad.length; sei++) {
                     if (((InternetAddress) ad[sei]).getAddress()
                              .equalsIgnoreCase(tmpAddress)) {
@@ -516,9 +514,8 @@
                 }
             }
         } catch (Exception e) {
-            this.getLogger().error("Exception during sending of mail", e);
-            this.sendExceptionElement(e);
-
+            getLogger().error("Exception sending mail", e);
+            sendExceptionElement(e);
             return;
         }
 
@@ -529,6 +526,11 @@
         Message sm = new MimeMessage(session);
 
         //sm.setAllow8bitMIME(true);
+        Address[] replyTo = new Address[this.replyToAddresses.size()];
+        for (int i = 0 ; i < this.replyToAddresses.size(); i++) {
+            replyTo[i] = new InternetAddress((String) this.replyToAddresses.get(i));
+        }
+        sm.setReplyTo(replyTo);
         sm.setFrom(new InternetAddress(this.fromAddress));
         sm.setSubject(this.subject);
 
@@ -560,14 +562,13 @@
             messageBodyPart = new MimeBodyPart();
 
             if (!aD.isTextContent()) {
-                Source     inputSource = null;
+                Source inputSource = null;
                 DataSource dataSource = null;
 
                 if (aD.isURLSource()) {
                     inputSource = resolver.resolveURI(aD.strAttrSrc);
 
                     String iSS = inputSource.getURI();
-
                     if (iSS.startsWith("cocoon:")) {
                         iSS = iSS.substring(7, iSS.length());
 
@@ -578,9 +579,8 @@
                             iSS = "http://localhost:" + this.port + iSS;
                         }
 
-                        if (this.getLogger().isDebugEnabled()) {
-                            this.getLogger().debug("cocoon-URI changed to " +
-                                                   iSS);
+                        if (getLogger().isDebugEnabled()) {
+                            getLogger().debug("cocoon-URI changed to " + iSS);
                         }
 
                         dataSource = new URLDataSource(new URL(iSS));
@@ -636,7 +636,7 @@
 
     private void sendExceptionElement(Exception ex) {
         try {
-	    this.ignoreHooksCount++;
+            this.ignoreHooksCount++;
             super.sendStartElementEventNS("exception");
             super.sendStartElementEventNS("message");
             super.sendTextEvent(ex.getMessage());
@@ -653,9 +653,9 @@
             super.sendEndElementEvent("email:stacktrace");*/
 
             super.sendEndElementEventNS("exception");
-	    this.ignoreHooksCount--;
+            this.ignoreHooksCount--;
         } catch (SAXException e) {
-            this.getLogger().error("Error while sending a SAX-Event", e);
+            getLogger().error("Error while sending a SAX-Event", e);
         }
     }
 

Modified: cocoon/trunk/src/blocks/mail/mocks/javax/mail/Message.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/mail/mocks/javax/mail/Message.java?view=diff&r1=155036&r2=155037
==============================================================================
--- cocoon/trunk/src/blocks/mail/mocks/javax/mail/Message.java (original)
+++ cocoon/trunk/src/blocks/mail/mocks/javax/mail/Message.java Wed Feb 23 09:59:29 2005
@@ -20,8 +20,8 @@
 /**
  * Mock class providing the declarations required to compile the Cocoon code when
  * the actual library is not present.
- * 
- * @version CVS $Id: Message.java,v 1.4 2004/03/06 02:25:46 antonio Exp $
+ *
+ * @version CVS $Id$
  */
 public abstract class Message implements Part {
 
@@ -35,9 +35,12 @@
         throw new NoSuchMethodError("This is a mock object");
 	}
 
-	public void setRecipient(
-		RecipientType type,
-		Address address) throws MessagingException {
+	public void setReplyTo(Address[] addresses) throws MessagingException {
+        throw new NoSuchMethodError("This is a mock object");
+	}
+
+    public void setRecipient(RecipientType type,
+                             Address address) throws MessagingException {
         throw new NoSuchMethodError("This is a mock object");
 	}
 
@@ -52,59 +55,57 @@
 	public void setSentDate(Date date) throws MessagingException {
         throw new NoSuchMethodError("This is a mock object");
 	}
-	
+
 	public Object getContent() throws java.io.IOException, MessagingException {
 		throw new NoSuchMethodError("This is a mock object");
 	}
-	
+
 	public Address[] getFrom() throws MessagingException {
 		throw new NoSuchMethodError("This is a mock object");
 	}
-	
+
 	public Address[] getRecipients(RecipientType type) throws MessagingException {
 		throw new NoSuchMethodError("This is a mock object");
 	}
-	
+
 	public Address[] getReplyTo() throws MessagingException {
 		throw new NoSuchMethodError("This is a mock object");
 	}
-	
+
 	public String getSubject() throws MessagingException {
 		throw new NoSuchMethodError("This is a mock object");
 	}
-	
+
 	public java.util.Date getSentDate() throws MessagingException {
 		throw new NoSuchMethodError("This is a mock object");
 	}
-	
+
 	public java.util.Date getReceivedDate() throws MessagingException {
 		throw new NoSuchMethodError("This is a mock object");
 	}
-	
+
 	public int getSize() throws MessagingException {
 		throw new NoSuchMethodError("This is a mock object");
 	}
-	
+
 	public int getMessageNumber() throws MessagingException {
 		throw new NoSuchMethodError("This is a mock object");
 	}
-	
+
 	public Flags getFlags() throws MessagingException {
 		throw new NoSuchMethodError("This is a mock object");
 	}
-    
-    public void setRecipients(Message.RecipientType type, Address[] addresses) 
-    throws MessagingException {     
+
+    public void setRecipients(Message.RecipientType type, Address[] addresses)
+    throws MessagingException {
        throw new NoSuchMethodError("This is a mock object");
     }
 
-    public void setContent(Multipart mp)
-    throws MessagingException {     
+    public void setContent(Multipart mp) throws MessagingException {
        throw new NoSuchMethodError("This is a mock object");
     }
 
-    public void saveChanges()
-    throws MessagingException {     
+    public void saveChanges() throws MessagingException {
        throw new NoSuchMethodError("This is a mock object");
     }
 }

Modified: cocoon/trunk/src/blocks/mail/mocks/javax/mail/internet/MimeMessage.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/mail/mocks/javax/mail/internet/MimeMessage.java?view=diff&r1=155036&r2=155037
==============================================================================
--- cocoon/trunk/src/blocks/mail/mocks/javax/mail/internet/MimeMessage.java (original)
+++ cocoon/trunk/src/blocks/mail/mocks/javax/mail/internet/MimeMessage.java Wed Feb 23 09:59:29
2005
@@ -25,8 +25,8 @@
 /**
  * Mock class providing the declarations required to compile the Cocoon code when
  * the actual library is not present.
- * 
- * @version CVS $Id: MimeMessage.java,v 1.4 2004/03/06 02:25:44 antonio Exp $
+ *
+ * @version CVS $Id$
  */
 public class MimeMessage extends Message implements MimePart {
 
@@ -71,19 +71,24 @@
     }
 
     public void setRecipients(Message.RecipientType type, Address[] addresses)
-        throws MessagingException {
+    throws MessagingException {
+        throw new NoSuchMethodError("This is a mock object");
     }
 
     public void setText(java.lang.String text, java.lang.String charset)
-        throws MessagingException {
+    throws MessagingException {
+        throw new NoSuchMethodError("This is a mock object");
     }
 
     public void setDataHandler(DataHandler dh) throws MessagingException {
+        throw new NoSuchMethodError("This is a mock object");
     }
 
     public void setFileName(String filename) throws MessagingException {
+        throw new NoSuchMethodError("This is a mock object");
     }
-    
+
     public void setContent(Multipart mp) throws MessagingException {
+        throw new NoSuchMethodError("This is a mock object");
     }
 }

Modified: cocoon/trunk/src/blocks/mail/samples/samples.xml
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/mail/samples/samples.xml?view=diff&r1=155036&r2=155037
==============================================================================
--- cocoon/trunk/src/blocks/mail/samples/samples.xml (original)
+++ cocoon/trunk/src/blocks/mail/samples/samples.xml Wed Feb 23 09:59:29 2005
@@ -15,35 +15,38 @@
   limitations under the License.
 -->
 
-<!-- CVS: $Id: samples.xml,v 1.5 2004/04/05 12:25:34 antonio Exp $ -->
+<!-- CVS: $Id$ -->
 
 <samples xmlns:xlink="http://www.w3.org/1999/xlink" name="Mail Block Samples">
 
   <group name="Back">
      <sample name="Back" href="../..">to Cocoon Samples main page</sample>
      <sample name="Back" href="..">to Cocoon Blocks Samples main page</sample>
-     <note>
-       You need to have SMTP up and running on the server for this and propably
-       you have to put a mail.jar in your WEB-INF/lib directory.
-     </note>
   </group>
 
-  <group name="Sendmail">
-     <sample name="Action documentation" href="/docs/userdocs/actions/sendmail-action.html">
-       Documentation for the Sendmail action component.
-     </sample>
-     <sample name="Logicsheet documentation" href="/docs/userdocs/xsp/sendmail.html">
-       Documentation for the Sendmail logicsheet component.
-     </sample>
-     <sample name="Sample" href="sendmail/new.html" xlink:role="dynamic">
-       Send email using the either Sendmail action or Sendmail logicsheet.
-     </sample>
+  <group name="Mail">
+    <note>
+      For samples to  work you have to have access to the SMTP server and
+      you have to download and put mail.jar and activation.jar into the lib/local
+      (or your WEB-INF/lib) directory.
+    </note>
+    <sample name="Send Mail" href="sendmail/new.html" xlink:role="dynamic">
+      Send an email using either Sendmail action or Sendmail logicsheet.
+    </sample>
   </group>
 
-  <group name="Web-Mail Sample">
-     <sample name="Web-Mail" href="mail/index.html" xlink:role="dynamic">
-       Start the Web-Mail application.
-     </sample>
+  <group name="Web Mail">
+    <sample name="Web Mail" href="mail/index.html" xlink:role="dynamic">
+       Start the web mail sample application.
+    </sample>
+  </group>
+
+  <group name="Documentation">
+    <sample name="Action documentation" href="/docs/userdocs/actions/sendmail-action.html">
+      Documentation for the Sendmail action component.
+    </sample>
+    <sample name="Logicsheet documentation" href="/docs/userdocs/xsp/sendmail.html">
+      Documentation for the Sendmail logicsheet component.
+    </sample>
   </group>
-  
 </samples>

Modified: cocoon/trunk/status.xml
URL: http://svn.apache.org/viewcvs/cocoon/trunk/status.xml?view=diff&r1=155036&r2=155037
==============================================================================
--- cocoon/trunk/status.xml (original)
+++ cocoon/trunk/status.xml Wed Feb 23 09:59:29 2005
@@ -482,6 +482,9 @@
    </action>
  </release>
  <release version="2.1.7" date="TBD">
+   <action dev="VG" type="add" fixes-bug="28973" due-to="Andrew Thornton" due-to-email="andrew@caret.cam.ac.uk">
+     Mail Block: Add support for replyTo.
+   </action>
    <action dev="VG" type="update">
      OJB Block: Integrated OJB logging with Cocoon logging.
    </action>



Mime
View raw message