Interface ContentHandler

  • All Known Implementing Classes:
    AbstractContentHandler, ParserStreamContentHandler, SimpleContentHandler

    public interface ContentHandler

    Receives notifications of the content of a plain RFC822 or MIME message. Implement this interface and register an instance of that implementation with a MimeStreamParser instance using its MimeStreamParser.setContentHandler(ContentHandler) method. The parser uses the ContentHandler instance to report basic message-related events like the start and end of the body of a part in a multipart MIME entity.

    Throwing an exception from an event method will terminate the message processing, i.e. no new events will be generated for that message.

    Events will be generated in the order the corresponding elements occur in the message stream parsed by the parser. E.g.:

          startMessage()
              startHeader()
                  field(...)
                  field(...)
                  ...
              endHeader()
              startMultipart()
                  preamble(...)
                  startBodyPart()
                      startHeader()
                          field(...)
                          field(...)
                          ...
                      endHeader()
                      body()
                  endBodyPart()
                  startBodyPart()
                      startHeader()
                          field(...)
                          field(...)
                          ...
                      endHeader()
                      body()
                  endBodyPart()
                  epilogue(...)
              endMultipart()
          endMessage()
     

    The above shows an example of a MIME message consisting of a multipart body containing two body parts.

    See MIME RFCs 2045-2049 for more information on the structure of MIME messages and RFC 822 and 2822 for the general structure of Internet mail messages.

    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      void body​(BodyDescriptor bd, java.io.InputStream is)
      Called when the body of a discrete (non-multipart) entity is about to be parsed.
      void endBodyPart()
      Called when a body part ends.
      void endHeader()
      Called when there are no more header fields in a message or body part.
      void endMessage()
      Called when a message ends.
      void endMultipart()
      Called when the body of an entity has been parsed.
      void epilogue​(java.io.InputStream is)
      Called for the epilogue (whatever comes after the final body part) of a multipart/* entity.
      void field​(Field rawField)
      Called for each field of a header.
      void preamble​(java.io.InputStream is)
      Called for the preamble (whatever comes before the first body part) of a multipart/* entity.
      void raw​(java.io.InputStream is)
      Called when a new entity (message or body part) starts and the parser is in raw mode.
      void startBodyPart()
      Called when a new body part starts inside a multipart/* entity.
      void startHeader()
      Called when a header (of a message or body part) is about to be parsed.
      void startMessage()
      Called when a new message starts (a top level message or an embedded rfc822 message).
      void startMultipart​(BodyDescriptor bd)
      Called when the body of a multipart entity is about to be parsed.
    • Method Detail

      • startMessage

        void startMessage()
                   throws MimeException
        Called when a new message starts (a top level message or an embedded rfc822 message).
        Throws:
        MimeException - on processing errors
      • startBodyPart

        void startBodyPart()
                    throws MimeException
        Called when a new body part starts inside a multipart/* entity.
        Throws:
        MimeException - on processing errors
      • startHeader

        void startHeader()
                  throws MimeException
        Called when a header (of a message or body part) is about to be parsed.
        Throws:
        MimeException - on processing errors
      • field

        void field​(Field rawField)
            throws MimeException
        Called for each field of a header.
        Parameters:
        rawField - the MIME field.
        Throws:
        MimeException - on processing errors
      • endHeader

        void endHeader()
                throws MimeException
        Called when there are no more header fields in a message or body part.
        Throws:
        MimeException - on processing errors
      • preamble

        void preamble​(java.io.InputStream is)
               throws MimeException,
                      java.io.IOException
        Called for the preamble (whatever comes before the first body part) of a multipart/* entity.
        Parameters:
        is - used to get the contents of the preamble.
        Throws:
        MimeException - on processing errors
        java.io.IOException - should be thrown on I/O errors.
      • epilogue

        void epilogue​(java.io.InputStream is)
               throws MimeException,
                      java.io.IOException
        Called for the epilogue (whatever comes after the final body part) of a multipart/* entity.
        Parameters:
        is - used to get the contents of the epilogue.
        Throws:
        MimeException - on processing errors
        java.io.IOException - should be thrown on I/O errors.
      • startMultipart

        void startMultipart​(BodyDescriptor bd)
                     throws MimeException
        Called when the body of a multipart entity is about to be parsed.
        Parameters:
        bd - encapsulates the values (either read from the message stream or, if not present, determined implictly as described in the MIME rfc:s) of the Content-Type and Content-Transfer-Encoding header fields.
        Throws:
        MimeException - on processing errors
      • endMultipart

        void endMultipart()
                   throws MimeException
        Called when the body of an entity has been parsed.
        Throws:
        MimeException - on processing errors
      • body

        void body​(BodyDescriptor bd,
                  java.io.InputStream is)
           throws MimeException,
                  java.io.IOException
        Called when the body of a discrete (non-multipart) entity is about to be parsed.
        Parameters:
        bd - see startMultipart(BodyDescriptor)
        is - the contents of the body. NOTE: this is the raw body contents - it will not be decoded if encoded. The bd parameter should be used to determine how the stream data should be decoded.
        Throws:
        MimeException - on processing errors
        java.io.IOException - should be thrown on I/O errors.
      • raw

        void raw​(java.io.InputStream is)
          throws MimeException,
                 java.io.IOException
        Called when a new entity (message or body part) starts and the parser is in raw mode.
        Parameters:
        is - the raw contents of the entity.
        Throws:
        MimeException - on processing errors
        java.io.IOException - should be thrown on I/O errors.
        See Also:
        MimeStreamParser.setRaw()