FileDocCategorySizeDatePackage
ContentHandler.javaAPI DocAndroid 1.5 API6390Wed May 06 22:42:46 BST 2009org.apache.james.mime4j

ContentHandler

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 {@link org.apache.james.mime4j.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.

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.

version
$Id: ContentHandler.java,v 1.3 2004/10/02 12:41:10 ntherning Exp $

Fields Summary
Constructors Summary
Methods Summary
public voidbody(BodyDescriptor bd, java.io.InputStream is)
Called when the body of a discrete (non-multipart) entity is about to be parsed.

param
bd see {@link #startMultipart(BodyDescriptor)}
param
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
IOException should be thrown on I/O errors.

public voidendBodyPart()
Called when a body part ends.

public voidendHeader()
Called when there are no more header fields in a message or body part.

public voidendMessage()
Called when a message ends.

public voidendMultipart()
Called when the body of an entity has been parsed.

public voidepilogue(java.io.InputStream is)
Called for the epilogue (whatever comes after the final body part) of a multipart/* entity.

param
is used to get the contents of the epilogue.
throws
IOException should be thrown on I/O errors.

public voidfield(java.lang.String fieldData)
Called for each field of a header.

param
fieldData the raw contents of the field (Field-Name: field value). The value will not be unfolded.

public voidpreamble(java.io.InputStream is)
Called for the preamble (whatever comes before the first body part) of a multipart/* entity.

param
is used to get the contents of the preamble.
throws
IOException should be thrown on I/O errors.

public voidraw(java.io.InputStream is)
Called when a new entity (message or body part) starts and the parser is in raw mode.

param
is the raw contents of the entity.
throws
IOException should be thrown on I/O errors.
see
MimeStreamParser#setRaw(boolean)

public voidstartBodyPart()
Called when a new body part starts inside a multipart/* entity.

public voidstartHeader()
Called when a header (of a message or body part) is about to be parsed.

public voidstartMessage()
Called when a new message starts (a top level message or an embedded rfc822 message).

public voidstartMultipart(BodyDescriptor bd)
Called when the body of a multipart entity is about to be parsed.

param
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.