germuska    2004/11/14 13:15:33

  Modified:    email/xdocs examples.xml
               email/src/java/org/apache/commons/mail Email.java
  Log:
  add support for bounce handling and document in examples.xml
  
  Revision  Changes    Path
  1.4       +32 -1     jakarta-commons-sandbox/email/xdocs/examples.xml
  
  Index: examples.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/email/xdocs/examples.xml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- examples.xml      19 Feb 2004 23:21:41 -0000      1.3
  +++ examples.xml      14 Nov 2004 21:15:33 -0000      1.4
  @@ -193,6 +193,37 @@
   
         </p>
       </section>
  +    <section name="Handling Bounced Messages">
  +      <p>
  +        Normally, messages which cannot be delivered to a recipient are 
returned to the
  +        sender (specified with the <code>from</code> property).  However, in 
some cases,
  +        you'll want these to be sent to a different address.  To do this, 
simply call the
  +        <code>setBounceAddress(emailAddressString)</code> method before 
sending
  +        your email.
  +      </p>
  +      <p>
  +        Technical notes: When SMTP servers cannot deliver mail, they do not 
pay any attention
  +        to the contents of the message to determine where the error 
notification should be
  +        sent.  Rather, they refer to the SMTP "envelope sender" value.  
JavaMail sets this
  +        value according to the value of the <code>mail.smtp.from</code> 
property on the 
  +        JavaMail <code>Session</code>.  (Commons Email initializes the 
JavaMail 
  +        <code>Session</code> using <code>System.getProperties()</code>)
  +        If this property has not been set, then JavaMail
  +        uses the "from" address.  If your email bean has the 
<code>bounceAddress</code>
  +        property set, then Commons Email uses it to set the value of 
<code>mail.smtp.from</code>
  +        when the <code>Session</code> is initialized, overriding any other 
value 
  +        which might have been set.
  +      </p>
  +      <p>
  +        <em>Note: </em> This is the only way to control the handling of 
bounced email.  
  +        Specifically, the "Errors-to:" SMTP header is deprecated and cannot 
be trusted
  +        to control how a bounced message will be handled.  Also note that it 
is considered bad 
  +        practice to send email with an untrusted "from" address unless you 
also set the 
  +        bounce address.  If your application allows users to enter an 
address which is used
  +        as the "from" address on an email, you should be sure to set the 
bounce address
  +        to a known good address.
  +      </p>
  +    </section>
     </body>
   </document>
   
  
  
  
  1.26      +31 -2     
jakarta-commons-sandbox/email/src/java/org/apache/commons/mail/Email.java
  
  Index: Email.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/email/src/java/org/apache/commons/mail/Email.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- Email.java        29 Oct 2004 12:06:40 -0000      1.25
  +++ Email.java        14 Nov 2004 21:15:33 -0000      1.26
  @@ -162,6 +162,14 @@
       /** List of "replyTo" email adresses */
       protected ArrayList replyList = new ArrayList();
   
  +    /** 
  +     * Address to which undeliverable mail should be sent. 
  +     * Because this is handled by JavaMail as a String property
  +     * in the mail session, this property is of type <code>String</code>
  +     * rather than <code>InternetAddress</code>.
  +     */
  +    protected String bounceAddress = null;
  +
       /**
        * Used to specify the mail headers.  Example:
        *
  @@ -172,7 +180,7 @@
       protected Hashtable headers = new Hashtable();
   
       /**
  -     * Used to determine wether to use pop3 before smtp, and if so the 
settings.
  +     * Used to determine whether to use pop3 before smtp, and if so the 
settings.
        */
   
       /** */
  @@ -357,6 +365,11 @@
                   properties.setProperty(MAIL_SMTP_AUTH, "true");
               }
   
  +            if (this.bounceAddress != null)
  +            {
  +                properties.setProperty(MAIL_SMTP_FROM, this.bounceAddress);
  +            }
  +
               // changed this (back) to getInstance due to security exceptions 
               // caused when testing using maven
               this.session =
  @@ -725,6 +738,22 @@
           this.subject = aSubject;
           return this;
       }
  +
  +    /**
  +     * Set the "bounce address" - the address to which undeliverable messages
  +     * will be returned.  If this value is never set, then the message will 
be
  +     * sent to the address specified with the System property 
"mail.smtp.from",
  +     * or if that value is not set, then to the "from" address.
  +     *
  +     * @param email A String.
  +     * @return An Email.
  +     */
  +    public Email setBounceAddress(String email)
  +    {
  +        this.bounceAddress = email;
  +        return this;
  +    }
  +
   
       /**
        * Define the content of the mail.  It should be overidden by the
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to