FileDocCategorySizeDatePackage
Part.javaAPI DocGlassfish v2 API18111Mon May 14 15:28:48 BST 2007javax.mail

Part

public interface Part
The Part interface is the common base interface for Messages and BodyParts.

Part consists of a set of attributes and a "Content".

Attributes:

The JavaMail API defines a set of standard Part attributes that are considered to be common to most existing Mail systems. These attributes have their own settor and gettor methods. Mail systems may support other Part attributes as well, these are represented as name-value pairs where both the name and value are Strings.

Content:

The data type of the "content" is returned by the getContentType() method. The MIME typing system is used to name data types.

The "content" of a Part is available in various formats:

  • As a DataHandler - using the getDataHandler() method. The "content" of a Part is also available through a javax.activation.DataHandler object. The DataHandler object allows clients to discover the operations available on the content, and to instantiate the appropriate component to perform those operations.
  • As an input stream - using the getInputStream() method. Any mail-specific encodings are decoded before this stream is returned.
  • As a Java object - using the getContent() method. This method returns the "content" as a Java object. The returned object is of course dependent on the content itself. In particular, a "multipart" Part's content is always a Multipart or subclass thereof. That is, getContent() on a "multipart" type Part will always return a Multipart (or subclass) object.
Part provides the writeTo() method that streams out its bytestream in mail-safe form suitable for transmission. This bytestream is typically an aggregation of the Part attributes and its content's bytestream.

Message and BodyPart implement the Part interface. Note that in MIME parlance, Part models an Entity (RFC 2045, Section 2.4).

author
John Mani

Fields Summary
public static final String
ATTACHMENT
This part should be presented as an attachment.
public static final String
INLINE
This part should be presented inline.
Constructors Summary
Methods Summary
public voidaddHeader(java.lang.String header_name, java.lang.String header_value)
Add this value to the existing values for this header_name.

param
header_name the name of this header
param
header_value the value for this header
exception
MessagingException
exception
IllegalWriteException if the underlying implementation does not support modification of existing values
exception
IllegalStateException if this Part is obtained from a READ_ONLY folder

public java.util.EnumerationgetAllHeaders()
Return all the headers from this part as an Enumeration of Header objects.

return
enumeration of Header objects
exception
MessagingException

public java.lang.ObjectgetContent()
Return the content as a Java object. The type of the returned object is of course dependent on the content itself. For example, the object returned for "text/plain" content is usually a String object. The object returned for a "multipart" content is always a Multipart subclass. For content-types that are unknown to the DataHandler system, an input stream is returned as the content

This is a convenience method that just invokes the DataHandler's getContent() method

return
Object
exception
MessagingException
exception
IOException this is typically thrown by the DataHandler. Refer to the documentation for javax.activation.DataHandler for more details.
see
javax.activation.DataHandler#getContent

public java.lang.StringgetContentType()
Returns the Content-Type of the content of this part. Returns null if the Content-Type could not be determined.

The MIME typing system is used to name Content-types.

return
The ContentType of this part
exception
MessagingException
see
javax.activation.DataHandler

public javax.activation.DataHandlergetDataHandler()
Return a DataHandler for the content within this part. The DataHandler allows clients to operate on as well as retrieve the content.

return
DataHandler for the content
exception
MessagingException

public java.lang.StringgetDescription()
Return a description String for this part. This typically associates some descriptive information with this part. Returns null if none is available.

return
description of this part
exception
MessagingException

public java.lang.StringgetDisposition()
Return the disposition of this part. The disposition describes how the part should be presented to the user. (See RFC 2183.) The return value should be considered without regard to case. For example:

String disp = part.getDisposition();
if (disp == null || disp.equalsIgnoreCase(Part.ATTACHMENT))
// treat as attachment if not first part

return
disposition of this part, or null if unknown
exception
MessagingException
see
#ATTACHMENT
see
#INLINE
see
#getFileName

public java.lang.StringgetFileName()
Get the filename associated with this part, if possible. Useful if this part represents an "attachment" that was loaded from a file. The filename will usually be a simple name, not including directory components.

return
Filename to associate with this part

public java.lang.String[]getHeader(java.lang.String header_name)
Get all the headers for this header name. Returns null if no headers for this header name are available.

param
header_name the name of this header
return
the value fields for all headers with this name
exception
MessagingException

public java.io.InputStreamgetInputStream()
Return an input stream for this part's "content". Any mail-specific transfer encodings will be decoded before the input stream is provided.

This is typically a convenience method that just invokes the DataHandler's getInputStream() method.

return
an InputStream
exception
IOException this is typically thrown by the DataHandler. Refer to the documentation for javax.activation.DataHandler for more details.
exception
MessagingException
see
#getDataHandler
see
javax.activation.DataHandler#getInputStream

public intgetLineCount()
Return the number of lines in the content of this part. Return -1 if the number cannot be determined. Note that this number may not be an exact measure of the content length and may or may not account for any transfer encoding of the content.

return
number of lines in the content.
exception
MessagingException

public java.util.EnumerationgetMatchingHeaders(java.lang.String[] header_names)
Return matching headers from this part as an Enumeration of Header objects.

return
enumeration of Header objects
exception
MessagingException

public java.util.EnumerationgetNonMatchingHeaders(java.lang.String[] header_names)
Return non-matching headers from this envelope as an Enumeration of Header objects.

return
enumeration of Header objects
exception
MessagingException

public intgetSize()
Return the size of the content of this part in bytes. Return -1 if the size cannot be determined.

Note that the size may not be an exact measure of the content size and may or may not account for any transfer encoding of the content. The size is appropriate for display in a user interface to give the user a rough idea of the size of this part.

return
size of content in bytes
exception
MessagingException

public booleanisMimeType(java.lang.String mimeType)
Is this Part of the specified MIME type? This method compares only the primaryType and subType. The parameters of the content types are ignored.

For example, this method will return true when comparing a Part of content type "text/plain" with "text/plain; charset=foobar".

If the subType of mimeType is the special character '*', then the subtype is ignored during the comparison.

public voidremoveHeader(java.lang.String header_name)
Remove all headers with this name.

param
header_name the name of this header
exception
MessagingException
exception
IllegalWriteException if the underlying implementation does not support modification of existing values
exception
IllegalStateException if this Part is obtained from a READ_ONLY folder

public voidsetContent(java.lang.Object obj, java.lang.String type)
A convenience method for setting this part's content. The part internally wraps the content in a DataHandler.

Note that a DataContentHandler class for the specified type should be available to the JavaMail implementation for this to work right. i.e., to do setContent(foobar, "application/x-foobar"), a DataContentHandler for "application/x-foobar" should be installed. Refer to the Java Activation Framework for more information.

param
obj A java object.
param
type MIME type of this object.
exception
IllegalWriteException if the underlying implementation does not support modification of existing values
exception
IllegalStateException if this Part is obtained from a READ_ONLY folder

public voidsetContent(javax.mail.Multipart mp)
This method sets the given Multipart object as this message's content.

param
mp The multipart object that is the Message's content
exception
IllegalWriteException if the underlying implementation does not support modification of existing values
exception
IllegalStateException if this Part is obtained from a READ_ONLY folder

public voidsetDataHandler(javax.activation.DataHandler dh)
This method provides the mechanism to set this part's content. The DataHandler wraps around the actual content.

param
dh The DataHandler for the content.
exception
MessagingException
exception
IllegalWriteException if the underlying implementation does not support modification of existing values
exception
IllegalStateException if this Part is obtained from a READ_ONLY folder

public voidsetDescription(java.lang.String description)
Set a description String for this part. This typically associates some descriptive information with this part.

param
description description of this part
exception
MessagingException
exception
IllegalWriteException if the underlying implementation does not support modification of this header
exception
IllegalStateException if this Part is obtained from a READ_ONLY folder

public voidsetDisposition(java.lang.String disposition)
Set the disposition of this part.

param
disposition disposition of this part
exception
MessagingException
exception
IllegalWriteException if the underlying implementation does not support modification of this header
exception
IllegalStateException if this Part is obtained from a READ_ONLY folder
see
#ATTACHMENT
see
#INLINE
see
#setFileName

public voidsetFileName(java.lang.String filename)
Set the filename associated with this part, if possible. Useful if this part represents an "attachment" that was loaded from a file. The filename will usually be a simple name, not including directory components.

param
filename Filename to associate with this part
exception
IllegalWriteException if the underlying implementation does not support modification of this header
exception
IllegalStateException if this Part is obtained from a READ_ONLY folder

public voidsetHeader(java.lang.String header_name, java.lang.String header_value)
Set the value for this header_name. Replaces all existing header values with this new value.

param
header_name the name of this header
param
header_value the value for this header
exception
MessagingException
exception
IllegalWriteException if the underlying implementation does not support modification of existing values
exception
IllegalStateException if this Part is obtained from a READ_ONLY folder

public voidsetText(java.lang.String text)
A convenience method that sets the given String as this part's content with a MIME type of "text/plain".

param
text The text that is the Message's content.
exception
IllegalWriteException if the underlying implementation does not support modification of existing values
exception
IllegalStateException if this Part is obtained from a READ_ONLY folder

public voidwriteTo(java.io.OutputStream os)
Output a bytestream for this Part. This bytestream is typically an aggregration of the Part attributes and an appropriately encoded bytestream from its 'content'.

Classes that implement the Part interface decide on the appropriate encoding algorithm to be used.

The bytestream is typically used for sending.

exception
IOException if an error occurs writing to the stream or if an error is generated by the javax.activation layer.
exception
MessagingException if an error occurs fetching the data to be written
see
javax.activation.DataHandler#writeTo