package com.acme.tag; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; import javax.mail.internet.*; import javax.mail.MessagingException; /** * A attachmentTag to use in a sendMailTag to add additional attachments * @author Magnus Rydin */ public class AttachmentTag extends BodyTagSupport { private String mimeType="text/plain"; private String filename; private SendMailTag sendMailTag; public AttachmentTag() { super(); } public void setFilename(String filename) { this.filename=filename; } public void setMimeType(String mimeType) { this.mimeType=mimeType; } public int doStartTag() throws JspTagException { //The sendMailTag should be our parent Tag sendMailTag=(SendMailTag)findAncestorWithClass(this,SendMailTag.class); //If SendTag was not our parent, throw Exception if(sendMailTag==null){ throw new JspTagException("Attachement outside Mail"); } return EVAL_BODY_TAG; } /** Method called at end of body * @return SKIP_BODY * @throws JspException if message content could not be set */ public int doAfterBody() throws JspTagException { try{ MimeBodyPart mbp=new MimeBodyPart(); mbp.setContent(bodyContent.getString(),mimeType); mbp.setFileName(filename); sendMailTag.getMultipart().addBodyPart(mbp); }catch(MessagingException me){ throw new JspTagException(me.getMessage()); } // clear body bodyContent.clearBody(); return SKIP_BODY; } }