FileDocCategorySizeDatePackage
HasAttachment.javaAPI DocApache James 2.3.13600Fri Jan 12 12:56:32 GMT 2007org.apache.james.transport.matchers

HasAttachment

public class HasAttachment extends org.apache.mailet.GenericMatcher
Checks whether this message has an attachment
version
CVS $Revision: 494012 $ $Date: 2007-01-08 11:23:58 +0100 (Mo, 08 Jan 2007) $

Fields Summary
Constructors Summary
Methods Summary
public java.util.Collectionmatch(org.apache.mailet.Mail mail)
Either every recipient is matching or neither of them.

throws
MessagingException if no attachment is found and at least one exception was thrown

        
        Exception anException = null;
        
        try {
            MimeMessage message = mail.getMessage();
            Object content;
            
            /**
             * if there is an attachment and no inline text,
             * the content type can be anything
             */
            if (message.getContentType() == null) {
                return null;
            }
            
            content = message.getContent();
            if (content instanceof Multipart) {
                Multipart multipart = (Multipart) content;
                for (int i = 0; i < multipart.getCount(); i++) {
                    try {
                        Part part = multipart.getBodyPart(i);
                        String fileName = part.getFileName();
                        if (fileName != null) {
                            return mail.getRecipients(); // file found
                        }
                    } catch (MessagingException e) {
                        anException = e;
                    } // ignore any messaging exception and process next bodypart
                }
            } else {
                String fileName = message.getFileName();
                if (fileName != null) {
                    return mail.getRecipients(); // file found
                }
            }
        } catch (Exception e) {
            anException = e;
        }
        
        // if no attachment was found and at least one exception was catched rethrow it up
        if (anException != null) {
            throw new MessagingException("Malformed message", anException);
        }
        
        return null; // no attachment found