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

    Modifier and Type
    Method
    Description
    void
    Called when the body of a discrete (non-multipart) entity is about to be parsed.
    void
    Called when a body part ends.
    void
    Called when there are no more header fields in a message or body part.
    void
    Called when a message ends.
    void
    Called when the body of an entity has been parsed.
    void
    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
    Called for the preamble (whatever comes before the first body part) of a multipart/* entity.
    void
    Called when a new entity (message or body part) starts and the parser is in raw mode.
    void
    Called when a new body part starts inside a multipart/* entity.
    void
    Called when a header (of a message or body part) is about to be parsed.
    void
    Called when a new message starts (a top level message or an embedded rfc822 message).
    void
    Called when the body of a multipart entity is about to be parsed.
  • Method Details

    • 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
    • endMessage

      void endMessage() throws MimeException
      Called when a message ends.
      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
    • endBodyPart

      void endBodyPart() throws MimeException
      Called when a body part ends.
      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(InputStream is) throws MimeException, 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
      IOException - should be thrown on I/O errors.
    • epilogue

      void epilogue(InputStream is) throws MimeException, 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
      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

      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
      IOException - should be thrown on I/O errors.
    • raw

      void raw(InputStream is) throws MimeException, 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
      IOException - should be thrown on I/O errors.
      See Also: