jakarta-taglibs-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Cooper <mfncoo...@gmail.com>
Subject Re: Content-ID: and URL based messages for mailer
Date Sat, 23 Oct 2004 02:18:27 GMT
Please submit these types of things as attachements to enhancement
requests in the bug tracking system:

http://issues.apache.org/bugzilla

There are two reasons for this:

1) Once it's in the bug tracking system, it's a lot less likely to get
lost than a simple message to the mailing list.

2) Patches pasted into a mail message rarely survive the e-mail world
sufficiently intact to be usable by the patch utility.

Thanks.

--
Martin Cooper


On Fri, 22 Oct 2004 20:54:18 -0400, Robert L. Murphy
<robertmurphy@insightbb.com> wrote:
> The two diffs add the folowing:
> 
> <mt:message url="http://www.domain.net"/>
> 
> <mt:message url="">
>    http://www.domain.net
> </mt:message>
> 
> And, when attaching a file, each attachment will have a Content-ID based
> on the filename.
> 
> 
> Index: AttachTag.java
> ===================================================================
> --- AttachTag.java      (revision 1)
> +++ AttachTag.java      (working copy)
> @@ -97,8 +97,13 @@
>         }
>         mbp = new MimeBodyPart();  // create the bodypart for this attachment
>         body = null;
> -        if (type != null || (file != null && file.length() == 0) ||
> -                (url != null && url.length() == 0) ) {
> +        if (
> +            type != null
> +        ||
> +            (file != null && file.length() == 0)
> +        ||
> +            (url != null && url.length() == 0)
> +        ) {
>             return EVAL_BODY_TAG;
>         }
>         return SKIP_BODY;
> @@ -233,10 +238,13 @@
>         try {
>             URL url = new URL(value);
>             mbp.setDataHandler(new DataHandler(url));
> -            if(url.getFile() != null)
> +            if(url.getFile() != null) {
>                 mbp.setFileName(url.getFile());
> -            else
> +                mbp.setContentID(url.getFile());
> +            } else {
>                 mbp.setFileName(value);
> +                mbp.setContentID(value);
> +            }
> 
>         } catch(MalformedURLException e) {
>             throw new JspException("The URL entered as an attachment was " +
> @@ -268,6 +276,7 @@
>                 DataSource attachment = new FileDataSource(file);
>                 mbp.setDataHandler(new DataHandler(attachment));
>                 mbp.setFileName(file.getName());
> +                mbp.setContentID(file.getName());
>             } else {
>                 // if the file does not exist it is probably an error in the way
>                 // the page author is adding the path throw an exception so this
> Index: MessageTag.java
> ===================================================================
> --- MessageTag.java     (revision 1)
> +++ MessageTag.java     (working copy)
> @@ -19,6 +19,11 @@
> import javax.servlet.jsp.JspException;
> import javax.servlet.jsp.tagext.BodyContent;
> import javax.servlet.jsp.tagext.BodyTagSupport;
> +import java.net.URL;
> +import javax.mail.internet.MimeBodyPart;
> +import javax.activation.DataHandler;
> +import java.net.MalformedURLException;
> +import javax.mail.MessagingException;
> 
> /**
>  * MessageTag - JSP tag <b>Message</b> is used to set the message in an e-mail.
> @@ -55,11 +60,27 @@
>     private String type = "text";
> 
>     /**
> +     * holds the value of body if the url is to be retrieved from the body of
> +     * tag
> +     */
> +    private String url = null;
> +
> +    /**
>      * character set to be used (default is unspecified)
>      */
>     private String charset = null;
> 
>     /**
> +     * object in which the attachment is stored within the e-mail message
> +     */
> +    private MimeBodyPart mbp = null;
> +
> +    /**
> +     * pointer to the parent tag
> +     */
> +    private MailTag myparent = null;
> +
> +    /**
>      *  implementation of the method from the tag interface that tells the JSP
>      *  page what to do after the body of this tag
>      *
> @@ -71,26 +92,81 @@
>      *
>      */
>     public int doAfterBody() throws JspException {
> +        BodyContent body = getBodyContent();
> +        mbp = new MimeBodyPart();  // create the bodypart for this attachment
> +        myparent = (MailTag)findAncestorWithClass(this, MailTag.class);
> +        if (url == null) {
> +            // parent tag must be a MailTag, gives access to methods in parent
> +            if (myparent == null) {
> +                throw new JspException("message tag not nested within mail tag");
> +            }
> +
> +            String message = body.getString();
> +            // Clear the body since we only used it as input for the email address
> +            body.clearBody();
> +            if (message == null) {
> +                throw new JspException("The message tag is empty");
> +            }
> +            myparent.setMessage(message); // set message in the parent tag
> +            myparent.setType(type);  // set the mime type of the message
> +            myparent.setCharset(charset);  // set the character set of the message
> +
> +        } else if (url.length() == 0 && body != null) {
> +            String s_body = body.getString();
> +            if(s_body != null)
> +                s_body = s_body.trim();
> +            // the url is supposed to come from the body of the tag
> +            if (s_body.length() > 0) {
> +                // prepare the file or url resource to be an attachment
> +                setUrlBodyPart(s_body);
> +            } else {
> +                // body is empty throw error
> +                throw new JspException(
> +                    "The url must be givenin the body of this tag.");
> +            }
> +        } else
> +            // create the attachment with the url in the url attribute
> +            setUrlBodyPart(url);
> +        return SKIP_BODY;
> +    }
> 
> -       // parent tag must be a MailTag, gives access to methods in parent
> -       MailTag myparent = (MailTag)findAncestorWithClass(this, MailTag.class);
> -       if (myparent == null) {
> -           throw new JspException("message tag not nested within mail tag");
> -        }
> +    /**
> +     * wrap the url named attachment in the approiate datahandler and create a
> +     * mimebodypart to be added to the list of attachments
> +     *
> +     * @param value  string that represents a URL
> +     *
> +     */
> +    protected void setUrlBodyPart(String value) throws JspException {
> 
> -        BodyContent body = getBodyContent();
> -        String message = body.getString();
> -        // Clear the body since we only used it as input for the email address
> -        body.clearBody();
> -        if (message == null) {
> -            throw new JspException("The message tag is empty");
> +// Added by Jayson Falkner - 5/8/2001
> +
> +        try {
> +            URL url = new URL(value);
> +            mbp.setDataHandler(new DataHandler(url));
> +            if(url.getFile() != null) {
> +                mbp.setFileName(url.getFile());
> +                mbp.setContentID(url.getFile());
> +            } else {
> +                mbp.setFileName(value);
> +                mbp.setContentID(value);
> +            }
> +            myparent.setMessage((String)mbp.getContent()); // set message in the parent
tag
> +            myparent.setType(type);  // set the mime type of the message
> +            myparent.setCharset(charset);  // set the character set of the message
> +        } catch(MalformedURLException e) {
> +            throw new JspException("The URL entered as an attachment was " +
> +                        "incorrectly formatted please check it and try again.");
> +        } catch(MessagingException e) {
> +            throw new JspException("The Resource named by " + url + " could not"
> +                                   + " be used as the message body.");
> +        } catch(java.io.IOException ioe) {
> +            throw new JspException("The Resource named by " + url + " could not"
> +                                   + " be cast to a String.");
>         }
> -       myparent.setMessage(message); // set message in the parent tag
> -       myparent.setType(type);  // set the mime type of the message
> -       myparent.setCharset(charset);  // set the character set of the message
> -       return SKIP_BODY;
> +// End of added
>     }
> -
> +
>     /**
>      * set the mime type for this email text or html
>      *
> @@ -110,4 +186,15 @@
>     public void setCharset(String value) {
>        charset = value;
>     }
> +
> +    /**
> +     * set the resource named by URL into a mimebodypart so that it can be added
> +     * to the list of attachments for this e-mail
> +     *
> +     * @param value  full url including http://, to the resource to be added as
> +     *               an attachment
> +     */
> +    public void setUrl(String value) {
> +        url = value;
> +    }
> }
> 
> 
> Index: AttachTag.java
> ===================================================================
> --- AttachTag.java      (revision 1)
> +++ AttachTag.java      (working copy)
> @@ -97,8 +97,13 @@
>         }
>         mbp = new MimeBodyPart();  // create the bodypart for this attachment
>         body = null;
> -        if (type != null || (file != null && file.length() == 0) ||
> -                (url != null && url.length() == 0) ) {
> +        if (
> +            type != null
> +        ||
> +            (file != null && file.length() == 0)
> +        ||
> +            (url != null && url.length() == 0)
> +        ) {
>             return EVAL_BODY_TAG;
>         }
>         return SKIP_BODY;
> @@ -233,10 +238,13 @@
>         try {
>             URL url = new URL(value);
>             mbp.setDataHandler(new DataHandler(url));
> -            if(url.getFile() != null)
> +            if(url.getFile() != null) {
>                 mbp.setFileName(url.getFile());
> -            else
> +                mbp.setContentID(url.getFile());
> +            } else {
>                 mbp.setFileName(value);
> +                mbp.setContentID(value);
> +            }
> 
>         } catch(MalformedURLException e) {
>             throw new JspException("The URL entered as an attachment was " +
> @@ -268,6 +276,7 @@
>                 DataSource attachment = new FileDataSource(file);
>                 mbp.setDataHandler(new DataHandler(attachment));
>                 mbp.setFileName(file.getName());
> +                mbp.setContentID(file.getName());
>             } else {
>                 // if the file does not exist it is probably an error in the way
>                 // the page author is adding the path throw an exception so this
> Index: MessageTag.java
> ===================================================================
> --- MessageTag.java     (revision 1)
> +++ MessageTag.java     (working copy)
> @@ -19,6 +19,11 @@
> import javax.servlet.jsp.JspException;
> import javax.servlet.jsp.tagext.BodyContent;
> import javax.servlet.jsp.tagext.BodyTagSupport;
> +import java.net.URL;
> +import javax.mail.internet.MimeBodyPart;
> +import javax.activation.DataHandler;
> +import java.net.MalformedURLException;
> +import javax.mail.MessagingException;
> 
> /**
>  * MessageTag - JSP tag <b>Message</b> is used to set the message in an e-mail.
> @@ -55,11 +60,27 @@
>     private String type = "text";
> 
>     /**
> +     * holds the value of body if the url is to be retrieved from the body of
> +     * tag
> +     */
> +    private String url = null;
> +
> +    /**
>      * character set to be used (default is unspecified)
>      */
>     private String charset = null;
> 
>     /**
> +     * object in which the attachment is stored within the e-mail message
> +     */
> +    private MimeBodyPart mbp = null;
> +
> +    /**
> +     * pointer to the parent tag
> +     */
> +    private MailTag myparent = null;
> +
> +    /**
>      *  implementation of the method from the tag interface that tells the JSP
>      *  page what to do after the body of this tag
>      *
> @@ -71,26 +92,81 @@
>      *
>      */
>     public int doAfterBody() throws JspException {
> +        BodyContent body = getBodyContent();
> +        mbp = new MimeBodyPart();  // create the bodypart for this attachment
> +        myparent = (MailTag)findAncestorWithClass(this, MailTag.class);
> +        if (url == null) {
> +            // parent tag must be a MailTag, gives access to methods in parent
> +            if (myparent == null) {
> +                throw new JspException("message tag not nested within mail tag");
> +            }
> +
> +            String message = body.getString();
> +            // Clear the body since we only used it as input for the email address
> +            body.clearBody();
> +            if (message == null) {
> +                throw new JspException("The message tag is empty");
> +            }
> +            myparent.setMessage(message); // set message in the parent tag
> +            myparent.setType(type);  // set the mime type of the message
> +            myparent.setCharset(charset);  // set the character set of the message
> +
> +        } else if (url.length() == 0 && body != null) {
> +            String s_body = body.getString();
> +            if(s_body != null)
> +                s_body = s_body.trim();
> +            // the url is supposed to come from the body of the tag
> +            if (s_body.length() > 0) {
> +                // prepare the file or url resource to be an attachment
> +                setUrlBodyPart(s_body);
> +            } else {
> +                // body is empty throw error
> +                throw new JspException(
> +                    "The url must be givenin the body of this tag.");
> +            }
> +        } else
> +            // create the attachment with the url in the url attribute
> +            setUrlBodyPart(url);
> +        return SKIP_BODY;
> +    }
> 
> -       // parent tag must be a MailTag, gives access to methods in parent
> -       MailTag myparent = (MailTag)findAncestorWithClass(this, MailTag.class);
> -       if (myparent == null) {
> -           throw new JspException("message tag not nested within mail tag");
> -        }
> +    /**
> +     * wrap the url named attachment in the approiate datahandler and create a
> +     * mimebodypart to be added to the list of attachments
> +     *
> +     * @param value  string that represents a URL
> +     *
> +     */
> +    protected void setUrlBodyPart(String value) throws JspException {
> 
> -        BodyContent body = getBodyContent();
> -        String message = body.getString();
> -        // Clear the body since we only used it as input for the email address
> -        body.clearBody();
> -        if (message == null) {
> -            throw new JspException("The message tag is empty");
> +// Added by Jayson Falkner - 5/8/2001
> +
> +        try {
> +            URL url = new URL(value);
> +            mbp.setDataHandler(new DataHandler(url));
> +            if(url.getFile() != null) {
> +                mbp.setFileName(url.getFile());
> +                mbp.setContentID(url.getFile());
> +            } else {
> +                mbp.setFileName(value);
> +                mbp.setContentID(value);
> +            }
> +            myparent.setMessage((String)mbp.getContent()); // set message in the parent
tag
> +            myparent.setType(type);  // set the mime type of the message
> +            myparent.setCharset(charset);  // set the character set of the message
> +        } catch(MalformedURLException e) {
> +            throw new JspException("The URL entered as an attachment was " +
> +                        "incorrectly formatted please check it and try again.");
> +        } catch(MessagingException e) {
> +            throw new JspException("The Resource named by " + url + " could not"
> +                                   + " be used as the message body.");
> +        } catch(java.io.IOException ioe) {
> +            throw new JspException("The Resource named by " + url + " could not"
> +                                   + " be cast to a String.");
>         }
> -       myparent.setMessage(message); // set message in the parent tag
> -       myparent.setType(type);  // set the mime type of the message
> -       myparent.setCharset(charset);  // set the character set of the message
> -       return SKIP_BODY;
> +// End of added
>     }
> -
> +
>     /**
>      * set the mime type for this email text or html
>      *
> @@ -110,4 +186,15 @@
>     public void setCharset(String value) {
>        charset = value;
>     }
> +
> +    /**
> +     * set the resource named by URL into a mimebodypart so that it can be added
> +     * to the list of attachments for this e-mail
> +     *
> +     * @param value  full url including http://, to the resource to be added as
> +     *               an attachment
> +     */
> +    public void setUrl(String value) {
> +        url = value;
> +    }
> }
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: taglibs-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: taglibs-dev-help@jakarta.apache.org
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: taglibs-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: taglibs-dev-help@jakarta.apache.org


Mime
View raw message