Class MimeBodyPart
- java.lang.Object
-
- javax.mail.BodyPart
-
- javax.mail.internet.MimeBodyPart
-
- Direct Known Subclasses:
IMAPBodyPart
public class MimeBodyPart extends BodyPart implements MimePart
A MIME body part. Body parts are components of multipart parts.The string representation of RFC822 and MIME header fields must contain only US-ASCII characters. Non US-ASCII characters must be encoded as per the rules in RFC 2047. This class does not enforce those rules; the caller is expected to use
MimeUtilityto ensure that header values are correctly encoded.- Version:
- 1.4
- Author:
- Chris Burdess
-
-
Field Summary
Fields Modifier and Type Field Description protected byte[]contentThe bytes of the content of this part, if the part can be stored in memory.protected java.io.InputStreamcontentStreamA SharedInputStream containing the bytes of this part, if it cannot be stored in memory.protected javax.activation.DataHandlerdhThe data handler managing this part's content.protected InternetHeadersheadersThe headers of this body part.-
Fields inherited from interface javax.mail.Part
ATTACHMENT, INLINE
-
-
Constructor Summary
Constructors Constructor Description MimeBodyPart()Constructor for an empty MIME body part.MimeBodyPart(java.io.InputStream is)Constructor with an input stream.MimeBodyPart(InternetHeaders headers, byte[] content)Constructor with headers and byte content.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddHeader(java.lang.String name, java.lang.String value)Adds the specified header.voidaddHeaderLine(java.lang.String line)Adds an RFC 822 header-line to this part.voidattachFile(java.io.File file)Use the specified file as the content for this part.voidattachFile(java.lang.String file)Use the specified file as the content for this part.java.util.EnumerationgetAllHeaderLines()Returns all the header-lines.java.util.EnumerationgetAllHeaders()Returns all the headers.java.lang.ObjectgetContent()Returns this part's content as a Java object.java.lang.StringgetContentID()Returns the value of the Content-ID header field.java.lang.String[]getContentLanguage()Returns the languages specified in the Content-Language header of this part, as defined by RFC 1766.java.lang.StringgetContentMD5()Returns the value of the Content-MD5 header field.protected java.io.InputStreamgetContentStream()Returns the unencoded bytes of the content.java.lang.StringgetContentType()Returns the value of the RFC 822 Content-Type header field, or "text/plain" if the header is not available.javax.activation.DataHandlergetDataHandler()Returns a data handler for accessing this part's content.java.lang.StringgetDescription()Returns the Content-Description header field of this part.java.lang.StringgetDisposition()Returns the value of the RFC 822 Content-Disposition header field, ornullif the header is not available.java.lang.StringgetEncoding()Returns the value of the Content-Transfer-Encoding header field.java.lang.StringgetFileName()Returns the filename associated with this body part.java.lang.String[]getHeader(java.lang.String name)Returns all the values for the specified header name.java.lang.StringgetHeader(java.lang.String name, java.lang.String delimiter)Returns all the values for the specified header name as a single string, with headers separated by the given delimiter.java.io.InputStreamgetInputStream()Returns a decoded input stream for this part's content.intgetLineCount()Returns the number of lines in the content of this body part, or -1 if this number cannot be determined.java.util.EnumerationgetMatchingHeaderLines(java.lang.String[] names)Returns all the header-lines with any of the given names.java.util.EnumerationgetMatchingHeaders(java.lang.String[] names)Returns all the headers with any of the given names.java.util.EnumerationgetNonMatchingHeaderLines(java.lang.String[] names)Returns all the header-lines without any of the given names.java.util.EnumerationgetNonMatchingHeaders(java.lang.String[] names)Returns all the headers without any of the given names.java.io.InputStreamgetRawInputStream()Returns the unencoded bytes of the content without applying any content transfer decoding.intgetSize()Returns the size of the content of this body part in bytes, or -1 if the size cannot be determined.booleanisMimeType(java.lang.String mimeType)Indicates whether this part is of the specified MIME type.voidremoveHeader(java.lang.String name)Removes all headers with the specified name.voidsaveFile(java.io.File file)Saves the content of this part to the specified file.voidsaveFile(java.lang.String file)Saves the content of this part to the specified file.voidsetContent(java.lang.Object o, java.lang.String type)Sets the content of this part using the specified Java object and MIME type.voidsetContent(Multipart mp)Sets the content of this part to be the specified multipart.voidsetContentID(java.lang.String cid)Sets the Content-ID header field of this part.voidsetContentLanguage(java.lang.String[] languages)Sets the Content-Language header of this part.voidsetContentMD5(java.lang.String md5)Sets the Content-MD5 header field of this part.voidsetDataHandler(javax.activation.DataHandler dh)Sets the content of this part using the specified data handler.voidsetDescription(java.lang.String description)Sets the Content-Description header field for this part.voidsetDescription(java.lang.String description, java.lang.String charset)Sets the Content-Description header field for this part.voidsetDisposition(java.lang.String disposition)Sets the Content-Disposition header field of this part.voidsetFileName(java.lang.String filename)Sets the filename associated with this body part.voidsetHeader(java.lang.String name, java.lang.String value)Sets the specified header.voidsetText(java.lang.String text)Sets the content of this part using the specified text, and with a MIME type of "text/plain".voidsetText(java.lang.String text, java.lang.String charset)Sets the content of this part using the specified text, and with a MIME type of "text/plain".voidsetText(java.lang.String text, java.lang.String charset, java.lang.String subtype)Sets the content of this part using the specified text, and with a text MIME type of the specified subtype.protected voidupdateHeaders()Updates the headers of this part, based on the content.voidwriteTo(java.io.OutputStream os)Writes this body part to the specified stream in RFC 822 format.
-
-
-
Field Detail
-
dh
protected javax.activation.DataHandler dh
The data handler managing this part's content.
-
content
protected byte[] content
The bytes of the content of this part, if the part can be stored in memory.
-
contentStream
protected java.io.InputStream contentStream
A SharedInputStream containing the bytes of this part, if it cannot be stored in memory.
-
headers
protected InternetHeaders headers
The headers of this body part.
-
-
Constructor Detail
-
MimeBodyPart
public MimeBodyPart()
Constructor for an empty MIME body part.
-
MimeBodyPart
public MimeBodyPart(java.io.InputStream is) throws MessagingExceptionConstructor with an input stream. The stream must be positioned at the start of a valid MIME body part and terminate at the end of that body part: the boundary string must not be included in the stream.- Parameters:
is- the input stream- Throws:
MessagingException
-
MimeBodyPart
public MimeBodyPart(InternetHeaders headers, byte[] content) throws MessagingException
Constructor with headers and byte content.- Parameters:
headers- the headercontent- the byte content of this part- Throws:
MessagingException
-
-
Method Detail
-
getSize
public int getSize() throws MessagingExceptionReturns the size of the content of this body part in bytes, or -1 if the size cannot be determined.Note that this number may not be an exact measure, but if not -1, it will be suitable for display to the user.
- Specified by:
getSizein interfacePart- Throws:
MessagingException
-
getLineCount
public int getLineCount() throws MessagingExceptionReturns the number of lines in the content of this body part, or -1 if this number cannot be determined.Note that this number may not be an exact measure, but if not -1, it will be suitable for display to the user.
- Specified by:
getLineCountin interfacePart- Throws:
MessagingException
-
getContentType
public java.lang.String getContentType() throws MessagingExceptionReturns the value of the RFC 822 Content-Type header field, or "text/plain" if the header is not available.- Specified by:
getContentTypein interfacePart- Throws:
MessagingException
-
isMimeType
public boolean isMimeType(java.lang.String mimeType) throws MessagingExceptionIndicates whether this part is of the specified MIME type.If the subtype of
mimeTypeis the special character '*', the subtype is ignored during the comparison.- Specified by:
isMimeTypein interfacePart- Throws:
MessagingException
-
getDisposition
public java.lang.String getDisposition() throws MessagingExceptionReturns the value of the RFC 822 Content-Disposition header field, ornullif the header is not available.- Specified by:
getDispositionin interfacePart- Throws:
MessagingException
-
setDisposition
public void setDisposition(java.lang.String disposition) throws MessagingExceptionSets the Content-Disposition header field of this part.- Specified by:
setDispositionin interfacePart- Parameters:
disposition- the disposition of this part- Throws:
IllegalWriteException- if the underlying implementation does not support modificationjava.lang.IllegalStateException- if this body part is obtained from a READ_ONLY folderMessagingException
-
getEncoding
public java.lang.String getEncoding() throws MessagingExceptionReturns the value of the Content-Transfer-Encoding header field.- Specified by:
getEncodingin interfaceMimePart- Throws:
MessagingException
-
getContentID
public java.lang.String getContentID() throws MessagingExceptionReturns the value of the Content-ID header field.- Specified by:
getContentIDin interfaceMimePart- Throws:
MessagingException
-
setContentID
public void setContentID(java.lang.String cid) throws MessagingExceptionSets the Content-ID header field of this part.- Throws:
IllegalWriteException- if the underlying implementation does not support modificationjava.lang.IllegalStateException- if this body part is obtained from a READ_ONLY folderMessagingException- Since:
- JavaMail 1.3
-
getContentMD5
public java.lang.String getContentMD5() throws MessagingExceptionReturns the value of the Content-MD5 header field.- Specified by:
getContentMD5in interfaceMimePart- Throws:
MessagingException
-
setContentMD5
public void setContentMD5(java.lang.String md5) throws MessagingExceptionSets the Content-MD5 header field of this part.- Specified by:
setContentMD5in interfaceMimePart- Throws:
IllegalWriteException- if the underlying implementation does not support modificationjava.lang.IllegalStateException- if this body part is obtained from a READ_ONLY folderMessagingException
-
getContentLanguage
public java.lang.String[] getContentLanguage() throws MessagingExceptionReturns the languages specified in the Content-Language header of this part, as defined by RFC 1766. This method returnsnullif this header is not available.- Specified by:
getContentLanguagein interfaceMimePart- Throws:
MessagingException
-
setContentLanguage
public void setContentLanguage(java.lang.String[] languages) throws MessagingExceptionSets the Content-Language header of this part.- Specified by:
setContentLanguagein interfaceMimePart- Parameters:
languages- the array of language tags- Throws:
IllegalWriteException- if the underlying implementation does not support modificationjava.lang.IllegalStateException- if this body part is obtained from a READ_ONLY folderMessagingException
-
getDescription
public java.lang.String getDescription() throws MessagingExceptionReturns the Content-Description header field of this part.If the Content-Description field is encoded as per RFC 2047, it is decoded and converted into Unicode.
- Specified by:
getDescriptionin interfacePart- Throws:
MessagingException
-
setDescription
public void setDescription(java.lang.String description) throws MessagingExceptionSets the Content-Description header field for this part.If
descriptioncontains non US-ASCII characters, it will be encoded using the platform default charset.- Specified by:
setDescriptionin interfacePart- Parameters:
description- the content description- Throws:
IllegalWriteException- if the underlying implementation does not support modificationjava.lang.IllegalStateException- if this body part is obtained from a READ_ONLY folderMessagingException
-
setDescription
public void setDescription(java.lang.String description, java.lang.String charset) throws MessagingExceptionSets the Content-Description header field for this part.If
descriptioncontains non US-ASCII characters, it will be encoded using the specified charset.- Parameters:
description- the content descriptioncharset- the charset used for encoding- Throws:
IllegalWriteException- if the underlying implementation does not support modificationjava.lang.IllegalStateException- if this body part is obtained from a READ_ONLY folderMessagingException
-
getFileName
public java.lang.String getFileName() throws MessagingExceptionReturns the filename associated with this body part.This method returns the value of the "filename" parameter from the Content-Disposition header field. If the latter is not available, it returns the value of the "name" parameter from the Content-Type header field.
- Specified by:
getFileNamein interfacePart- Throws:
MessagingException
-
setFileName
public void setFileName(java.lang.String filename) throws MessagingExceptionSets the filename associated with this body part.- Specified by:
setFileNamein interfacePart- Parameters:
filename- the filename to associate with this part- Throws:
IllegalWriteException- if the underlying implementation does not support modificationjava.lang.IllegalStateException- if this body part is obtained from a READ_ONLY folderMessagingException
-
getInputStream
public java.io.InputStream getInputStream() throws java.io.IOException, MessagingExceptionReturns a decoded input stream for this part's content.- Specified by:
getInputStreamin interfacePart- Throws:
java.io.IOException- if an error occurs in the data handler layerMessagingException
-
getContentStream
protected java.io.InputStream getContentStream() throws MessagingExceptionReturns the unencoded bytes of the content.- Throws:
MessagingException
-
getRawInputStream
public java.io.InputStream getRawInputStream() throws MessagingExceptionReturns the unencoded bytes of the content without applying any content transfer decoding.- Throws:
MessagingException
-
getDataHandler
public javax.activation.DataHandler getDataHandler() throws MessagingExceptionReturns a data handler for accessing this part's content.- Specified by:
getDataHandlerin interfacePart- Throws:
MessagingException
-
getContent
public java.lang.Object getContent() throws java.io.IOException, MessagingExceptionReturns this part's content as a Java object.- Specified by:
getContentin interfacePart- Throws:
java.io.IOException- if an error occurred in the data handler layerMessagingException
-
setDataHandler
public void setDataHandler(javax.activation.DataHandler dh) throws MessagingExceptionSets the content of this part using the specified data handler.- Specified by:
setDataHandlerin interfacePart- Parameters:
dh- the data handler for the content- Throws:
IllegalWriteException- if the underlying implementation does not support modificationjava.lang.IllegalStateException- if this body part is obtained from a READ_ONLY folderMessagingException
-
setContent
public void setContent(java.lang.Object o, java.lang.String type) throws MessagingExceptionSets the content of this part using the specified Java object and MIME type. Note that a data content handler for the MIME type must be installed and accept objects of the type given.- Specified by:
setContentin interfacePart- Parameters:
o- the content objecttype- the MIME type of the object- Throws:
IllegalWriteException- if the underlying implementation does not support modificationjava.lang.IllegalStateException- if this body part is obtained from a READ_ONLY folderMessagingException
-
setText
public void setText(java.lang.String text) throws MessagingExceptionSets the content of this part using the specified text, and with a MIME type of "text/plain".If the text contains non US-ASCII characters, it will be encoded using the platform default charset.
- Specified by:
setTextin interfaceMimePart- Specified by:
setTextin interfacePart- Parameters:
text- the text content- Throws:
IllegalWriteException- if the underlying implementation does not support modificationMessagingException
-
setText
public void setText(java.lang.String text, java.lang.String charset) throws MessagingExceptionSets the content of this part using the specified text, and with a MIME type of "text/plain".If the text contains non US-ASCII characters, it will be encoded using the specified charset.
- Specified by:
setTextin interfaceMimePart- Parameters:
text- the text contentcharset- the charset used for any encoding- Throws:
MessagingException
-
setText
public void setText(java.lang.String text, java.lang.String charset, java.lang.String subtype) throws MessagingExceptionSets the content of this part using the specified text, and with a text MIME type of the specified subtype.If the text contains non US-ASCII characters, it will be encoded using the specified charset.
- Specified by:
setTextin interfaceMimePart- Parameters:
text- the text contentcharset- the charset used for any encodingsubtype- the MIME text subtype (e.g. "plain", "html")- Throws:
MessagingException- Since:
- JavaMail 1.4
-
setContent
public void setContent(Multipart mp) throws MessagingException
Sets the content of this part to be the specified multipart.- Specified by:
setContentin interfacePart- Parameters:
mp- the multipart content- Throws:
IllegalWriteException- if the underlying implementation does not support modificationjava.lang.IllegalStateException- if this body part is obtained from a READ_ONLY folderMessagingException
-
writeTo
public void writeTo(java.io.OutputStream os) throws java.io.IOException, MessagingExceptionWrites this body part to the specified stream in RFC 822 format.- Specified by:
writeToin interfacePart- Throws:
java.io.IOException- if an error occurs writing to the stream or in the data handler layerMessagingException- if an error occurs fetching the data to be written
-
getHeader
public java.lang.String[] getHeader(java.lang.String name) throws MessagingExceptionReturns all the values for the specified header name. Note that headers may be encoded as per RFC 2047 if they contain non-US-ASCII characters: these should be decoded.- Specified by:
getHeaderin interfacePart- Parameters:
name- the header name- Throws:
MessagingException
-
getHeader
public java.lang.String getHeader(java.lang.String name, java.lang.String delimiter) throws MessagingExceptionReturns all the values for the specified header name as a single string, with headers separated by the given delimiter. If the delimiter isnull, only the first header is returned.- Specified by:
getHeaderin interfaceMimePart- Parameters:
name- the header namedelimiter- the delimiter- Throws:
MessagingException
-
setHeader
public void setHeader(java.lang.String name, java.lang.String value) throws MessagingExceptionSets the specified header.- Specified by:
setHeaderin interfacePart- Parameters:
name- the header namevalue- the header value- Throws:
IllegalWriteException- if the underlying implementation does not support modificationjava.lang.IllegalStateException- if this body part is obtained from a READ_ONLY folderMessagingException
-
addHeader
public void addHeader(java.lang.String name, java.lang.String value) throws MessagingExceptionAdds the specified header.- Specified by:
addHeaderin interfacePart- Parameters:
name- the header namevalue- the header value- Throws:
IllegalWriteException- if the underlying implementation does not support modificationjava.lang.IllegalStateException- if this body part is obtained from a READ_ONLY folderMessagingException
-
removeHeader
public void removeHeader(java.lang.String name) throws MessagingExceptionRemoves all headers with the specified name.- Specified by:
removeHeaderin interfacePart- Parameters:
name- the header name- Throws:
IllegalWriteException- if the underlying implementation does not support modificationjava.lang.IllegalStateException- if this body part is obtained from a READ_ONLY folderMessagingException
-
getAllHeaders
public java.util.Enumeration getAllHeaders() throws MessagingExceptionReturns all the headers.- Specified by:
getAllHeadersin interfacePart- Returns:
- an Enumeration of Header objects
- Throws:
MessagingException
-
getMatchingHeaders
public java.util.Enumeration getMatchingHeaders(java.lang.String[] names) throws MessagingExceptionReturns all the headers with any of the given names.- Specified by:
getMatchingHeadersin interfacePart- Parameters:
names- the header names to match- Returns:
- an Enumeration of Header objects
- Throws:
MessagingException
-
getNonMatchingHeaders
public java.util.Enumeration getNonMatchingHeaders(java.lang.String[] names) throws MessagingExceptionReturns all the headers without any of the given names.- Specified by:
getNonMatchingHeadersin interfacePart- Parameters:
names- the header names to ignore- Returns:
- an Enumeration of Header objects
- Throws:
MessagingException
-
addHeaderLine
public void addHeaderLine(java.lang.String line) throws MessagingExceptionAdds an RFC 822 header-line to this part.- Specified by:
addHeaderLinein interfaceMimePart- Throws:
IllegalWriteException- if the underlying implementation does not support modificationjava.lang.IllegalStateException- if this body part is obtained from a READ_ONLY folderMessagingException
-
getAllHeaderLines
public java.util.Enumeration getAllHeaderLines() throws MessagingExceptionReturns all the header-lines.- Specified by:
getAllHeaderLinesin interfaceMimePart- Returns:
- an Enumeration of Strings
- Throws:
MessagingException
-
getMatchingHeaderLines
public java.util.Enumeration getMatchingHeaderLines(java.lang.String[] names) throws MessagingExceptionReturns all the header-lines with any of the given names.- Specified by:
getMatchingHeaderLinesin interfaceMimePart- Returns:
- an Enumeration of Strings
- Throws:
MessagingException
-
getNonMatchingHeaderLines
public java.util.Enumeration getNonMatchingHeaderLines(java.lang.String[] names) throws MessagingExceptionReturns all the header-lines without any of the given names.- Specified by:
getNonMatchingHeaderLinesin interfaceMimePart- Returns:
- an Enumeration of Strings
- Throws:
MessagingException
-
updateHeaders
protected void updateHeaders() throws MessagingExceptionUpdates the headers of this part, based on the content.- Throws:
IllegalWriteException- if the underlying implementation does not support modificationjava.lang.IllegalStateException- if this body part is obtained from a READ_ONLY folderMessagingException
-
attachFile
public void attachFile(java.io.File file) throws java.io.IOException, MessagingExceptionUse the specified file as the content for this part.- Parameters:
file- the file- Throws:
java.io.IOExceptionMessagingException- Since:
- JavaMail 1.4
-
attachFile
public void attachFile(java.lang.String file) throws java.io.IOException, MessagingExceptionUse the specified file as the content for this part.- Parameters:
file- the file- Throws:
java.io.IOExceptionMessagingException- Since:
- JavaMail 1.4
-
saveFile
public void saveFile(java.io.File file) throws java.io.IOException, MessagingExceptionSaves the content of this part to the specified file.- Parameters:
file- the file- Throws:
java.io.IOExceptionMessagingException- Since:
- JavaMail 1.4
-
saveFile
public void saveFile(java.lang.String file) throws java.io.IOException, MessagingExceptionSaves the content of this part to the specified file.- Parameters:
file- the file- Throws:
java.io.IOExceptionMessagingException- Since:
- JavaMail 1.4
-
-