def __call__(self):
        # TODO: 
        # - recursive functionality:add checkbox (go recursively through mail?)
        obj = self.event.object
        header = self.element.header
        value = self.element.value
        
        if not IEmail.providedBy(obj):
            return False
        
        mailobj = email.message_from_string(obj.data)
        if not header in mailobj.keys():
            return False
        
        # The user may enter a malformed regex, in that case, the input should be interpreted as
        # a string
        try:
            exp = re.compile(value)
        except:
            return value in mailobj.get(header)

        if re.search(exp,mailobj.get(header)):
            return True

        return False
    def __call__(self):
        obj = self.event.object
        operator = self.element.operator
        size = self.element.size * 1024 * 1024
        if not IEmail.providedBy(obj):
            return False

        if operator == ">=":
            return len(obj.data) >= size

        if operator == "<=":
            return len(obj.data) <= size

        return False
 def __call__(self):
     obj = self.event.object
     maintype = self.element.maintype
     subtype = self.element.subtype
     if not IEmail.providedBy(obj):
         return False
     
     mailobj = email.message_from_string(obj.data)
     for part in mailobj.walk():
         if maintype and subtype:
             if part.get_content_maintype() == maintype and part.get_content_subtype() == subtype:
                 return True
         if maintype and not subtype:
             if part.get_content_maintype() == maintype:
                 return True
         if not maintype and subtype:
             if part.get_content_subtype() == subtype:
                 return True
         if not maintype and not subtype:
             return True
     return False
 def test_IEmail_interface(self):
     self.failUnless(IEmail.providedBy(self.portal.inbox.email))