com.sun.mail.util.ReadableMime, javax.mail.internet.MimePart, javax.mail.PartIMAPNestedMessagepublic class IMAPMessage
extends javax.mail.internet.MimeMessage
implements com.sun.mail.util.ReadableMime
An IMAPMessage object starts out as a light-weight object. It gets filled-in incrementally when a request is made for some item. Or when a prefetch is done using the FetchProfile.
An IMAPMessage has a messageNumber and a sequenceNumber. The messageNumber is its index into its containing folder's messageCache. The sequenceNumber is its IMAP sequence-number.
| Modifier and Type | Class | Description |
|---|---|---|
static class |
IMAPMessage.FetchProfileCondition |
This class implements the test to be done on each
message in the folder.
|
| Modifier and Type | Field | Description |
|---|---|---|
protected com.sun.mail.imap.protocol.BODYSTRUCTURE |
bs |
|
protected com.sun.mail.imap.protocol.ENVELOPE |
envelope |
|
protected java.util.Map<java.lang.String,java.lang.Object> |
items |
A map of the extension FETCH items.
|
protected java.lang.String |
sectionId |
| Modifier | Constructor | Description |
|---|---|---|
protected |
IMAPMessage(IMAPFolder folder,
int msgnum) |
Constructor.
|
protected |
IMAPMessage(javax.mail.Session session) |
Constructor, for use by IMAPNestedMessage.
|
| Modifier and Type | Method | Description |
|---|---|---|
void |
addFrom(javax.mail.Address[] addresses) |
|
void |
addHeader(java.lang.String name,
java.lang.String value) |
|
void |
addHeaderLine(java.lang.String line) |
|
void |
addRecipients(javax.mail.Message.RecipientType type,
javax.mail.Address[] addresses) |
|
protected void |
checkExpunged() |
|
protected java.lang.Object |
fetchItem(com.sun.mail.imap.protocol.FetchItem fitem) |
Fetch an individual item for the current message.
|
protected void |
forceCheckExpunged() |
Do a NOOP to force any untagged EXPUNGE responses
and then check if this message is expunged.
|
java.util.Enumeration<java.lang.String> |
getAllHeaderLines() |
Get all header-lines.
|
java.util.Enumeration<javax.mail.Header> |
getAllHeaders() |
Get all headers.
|
java.lang.String |
getContentID() |
Get the Content-ID.
|
java.lang.String[] |
getContentLanguage() |
Get the content language.
|
java.lang.String |
getContentMD5() |
Get the Content-MD5.
|
protected java.io.InputStream |
getContentStream() |
Get all the bytes for this message.
|
java.lang.String |
getContentType() |
Get the Content-Type.
|
javax.activation.DataHandler |
getDataHandler() |
Get the DataHandler object for this message.
|
java.lang.String |
getDescription() |
Get the decoded Content-Description.
|
java.lang.String |
getDisposition() |
Get the Content-Disposition.
|
java.lang.String |
getEncoding() |
Get the Content-Transfer-Encoding.
|
protected int |
getFetchBlockSize() |
|
java.lang.String |
getFileName() |
Get the "filename" Disposition parameter.
|
javax.mail.Flags |
getFlags() |
Get the Flags for this message.
|
javax.mail.Address[] |
getFrom() |
Get the "From" attribute.
|
java.lang.String[] |
getHeader(java.lang.String name) |
Get the named header.
|
java.lang.String |
getHeader(java.lang.String name,
java.lang.String delimiter) |
Get the named header.
|
java.lang.String |
getInReplyTo() |
Get the In-Reply-To header.
|
java.lang.Object |
getItem(com.sun.mail.imap.protocol.FetchItem fitem) |
Return the data associated with the FetchItem.
|
int |
getLineCount() |
Get the total number of lines.
|
java.util.Enumeration<java.lang.String> |
getMatchingHeaderLines(java.lang.String[] names) |
Get all matching header-lines.
|
java.util.Enumeration<javax.mail.Header> |
getMatchingHeaders(java.lang.String[] names) |
Get matching headers.
|
protected java.lang.Object |
getMessageCacheLock() |
Get the messageCacheLock, associated with this Message's
Folder.
|
java.lang.String |
getMessageID() |
Get the Message-ID.
|
java.io.InputStream |
getMimeStream() |
Return the MIME format stream corresponding to this message.
|
long |
getModSeq() |
Return the modification sequence number (MODSEQ) for this message.
|
java.util.Enumeration<java.lang.String> |
getNonMatchingHeaderLines(java.lang.String[] names) |
Get all non-matching headerlines.
|
java.util.Enumeration<javax.mail.Header> |
getNonMatchingHeaders(java.lang.String[] names) |
Get non-matching headers.
|
boolean |
getPeek() |
Get whether or not to use the PEEK variant of FETCH when
fetching message content.
|
protected com.sun.mail.imap.protocol.IMAPProtocol |
getProtocol() |
Get this message's folder's protocol connection.
|
java.util.Date |
getReceivedDate() |
Get the received date (INTERNALDATE).
|
javax.mail.Address[] |
getRecipients(javax.mail.Message.RecipientType type) |
Get the desired Recipient type.
|
javax.mail.Address[] |
getReplyTo() |
Get the ReplyTo addresses.
|
javax.mail.Address |
getSender() |
Get the "Sender" attribute.
|
java.util.Date |
getSentDate() |
Get the SentDate.
|
protected int |
getSequenceNumber() |
Get this message's IMAP sequence number.
|
int |
getSize() |
Get the message size.
|
long |
getSizeLong() |
Get the message size as a long.
|
java.lang.String |
getSubject() |
Get the decoded subject.
|
protected long |
getUID() |
Return the UID for this message.
|
protected void |
handleExtensionFetchItems(java.util.Map<java.lang.String,java.lang.Object> extensionItems) |
Apply the data in the extension FETCH items to this message.
|
protected boolean |
handleFetchItem(com.sun.mail.imap.protocol.Item item,
java.lang.String[] hdrs,
boolean allHeaders) |
Apply the data in the FETCH item to this message.
|
protected boolean |
ignoreBodyStructureSize() |
|
void |
invalidateHeaders() |
Invalidate cached header and envelope information for this
message.
|
protected boolean |
isREV1() |
|
boolean |
isSet(javax.mail.Flags.Flag flag) |
Test if the given Flags are set in this message.
|
void |
removeHeader(java.lang.String name) |
|
void |
setContentID(java.lang.String cid) |
|
void |
setContentLanguage(java.lang.String[] languages) |
|
void |
setContentMD5(java.lang.String md5) |
|
void |
setDataHandler(javax.activation.DataHandler content) |
|
void |
setDescription(java.lang.String description,
java.lang.String charset) |
|
void |
setDisposition(java.lang.String disposition) |
|
protected void |
setExpunged(boolean set) |
|
void |
setFileName(java.lang.String filename) |
|
void |
setFlags(javax.mail.Flags flag,
boolean set) |
Set/Unset the given flags in this message.
|
void |
setFrom(javax.mail.Address address) |
|
void |
setHeader(java.lang.String name,
java.lang.String value) |
|
protected void |
setMessageNumber(int msgnum) |
Wrapper around the protected method Message.setMessageNumber() to
make that method accessible to IMAPFolder.
|
void |
setPeek(boolean peek) |
Set whether or not to use the PEEK variant of FETCH when
fetching message content.
|
void |
setRecipients(javax.mail.Message.RecipientType type,
javax.mail.Address[] addresses) |
|
void |
setReplyTo(javax.mail.Address[] addresses) |
|
void |
setSender(javax.mail.Address address) |
|
void |
setSentDate(java.util.Date d) |
|
void |
setSubject(java.lang.String subject,
java.lang.String charset) |
|
protected void |
setUID(long uid) |
|
void |
writeTo(java.io.OutputStream os) |
Write out the bytes into the given OutputStream.
|
addRecipients, createInternetHeaders, createMimeMessage, getAllRecipients, getContent, getInputStream, getRawInputStream, isMimeType, parse, reply, reply, saveChanges, setContent, setContent, setDescription, setFrom, setFrom, setRecipients, setSubject, setText, setText, setText, updateHeaders, updateMessageID, writeToprotected com.sun.mail.imap.protocol.BODYSTRUCTURE bs
protected com.sun.mail.imap.protocol.ENVELOPE envelope
protected java.util.Map<java.lang.String,java.lang.Object> items
protected java.lang.String sectionId
protected IMAPMessage(IMAPFolder folder, int msgnum)
folder - the folder containing this messagemsgnum - the message sequence numberprotected IMAPMessage(javax.mail.Session session)
session - the Sessionprotected com.sun.mail.imap.protocol.IMAPProtocol getProtocol()
throws ProtocolException,
javax.mail.FolderClosedException
ProtocolException - for protocol errorsjavax.mail.FolderClosedException - if the folder is closedprotected boolean isREV1()
throws javax.mail.FolderClosedException
javax.mail.FolderClosedExceptionprotected java.lang.Object getMessageCacheLock()
protected int getSequenceNumber()
protected void setMessageNumber(int msgnum)
setMessageNumber in class javax.mail.Messageprotected long getUID()
UIDFolder.getUID(javax.mail.Message)protected void setUID(long uid)
public long getModSeq()
throws javax.mail.MessagingException
javax.mail.MessagingException - for failuresprotected void setExpunged(boolean set)
setExpunged in class javax.mail.Messageprotected void checkExpunged()
throws javax.mail.MessageRemovedException
javax.mail.MessageRemovedExceptionprotected void forceCheckExpunged()
throws javax.mail.MessageRemovedException,
javax.mail.FolderClosedException
javax.mail.MessageRemovedException - if the message has been removedjavax.mail.FolderClosedException - if the folder has been closedprotected int getFetchBlockSize()
protected boolean ignoreBodyStructureSize()
public javax.mail.Address[] getFrom()
throws javax.mail.MessagingException
getFrom in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic void setFrom(javax.mail.Address address)
throws javax.mail.MessagingException
setFrom in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic void addFrom(javax.mail.Address[] addresses)
throws javax.mail.MessagingException
addFrom in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic javax.mail.Address getSender()
throws javax.mail.MessagingException
getSender in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic void setSender(javax.mail.Address address)
throws javax.mail.MessagingException
setSender in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic javax.mail.Address[] getRecipients(javax.mail.Message.RecipientType type)
throws javax.mail.MessagingException
getRecipients in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic void setRecipients(javax.mail.Message.RecipientType type,
javax.mail.Address[] addresses)
throws javax.mail.MessagingException
setRecipients in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic void addRecipients(javax.mail.Message.RecipientType type,
javax.mail.Address[] addresses)
throws javax.mail.MessagingException
addRecipients in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic javax.mail.Address[] getReplyTo()
throws javax.mail.MessagingException
getReplyTo in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic void setReplyTo(javax.mail.Address[] addresses)
throws javax.mail.MessagingException
setReplyTo in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic java.lang.String getSubject()
throws javax.mail.MessagingException
getSubject in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic void setSubject(java.lang.String subject,
java.lang.String charset)
throws javax.mail.MessagingException
setSubject in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic java.util.Date getSentDate()
throws javax.mail.MessagingException
getSentDate in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic void setSentDate(java.util.Date d)
throws javax.mail.MessagingException
setSentDate in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic java.util.Date getReceivedDate()
throws javax.mail.MessagingException
getReceivedDate in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic int getSize()
throws javax.mail.MessagingException
Note that this returns RFC822.SIZE. That is, it's the size of the whole message, header and body included. Note also that if the size of the message is greater than Integer.MAX_VALUE (2GB), this method returns Integer.MAX_VALUE.
getSize in interface javax.mail.PartgetSize in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic long getSizeLong()
throws javax.mail.MessagingException
Suitable for messages that might be larger than 2GB.
javax.mail.MessagingException - for failurespublic int getLineCount()
throws javax.mail.MessagingException
Returns the "body_fld_lines" field from the BODYSTRUCTURE. Note that this field is available only for text/plain and message/rfc822 types
getLineCount in interface javax.mail.PartgetLineCount in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic java.lang.String[] getContentLanguage()
throws javax.mail.MessagingException
getContentLanguage in interface javax.mail.internet.MimePartgetContentLanguage in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic void setContentLanguage(java.lang.String[] languages)
throws javax.mail.MessagingException
setContentLanguage in interface javax.mail.internet.MimePartsetContentLanguage in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic java.lang.String getInReplyTo()
throws javax.mail.MessagingException
javax.mail.MessagingException - for failurespublic java.lang.String getContentType()
throws javax.mail.MessagingException
getContentType in interface javax.mail.PartgetContentType in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic java.lang.String getDisposition()
throws javax.mail.MessagingException
getDisposition in interface javax.mail.PartgetDisposition in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic void setDisposition(java.lang.String disposition)
throws javax.mail.MessagingException
setDisposition in interface javax.mail.PartsetDisposition in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic java.lang.String getEncoding()
throws javax.mail.MessagingException
getEncoding in interface javax.mail.internet.MimePartgetEncoding in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic java.lang.String getContentID()
throws javax.mail.MessagingException
getContentID in interface javax.mail.internet.MimePartgetContentID in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic void setContentID(java.lang.String cid)
throws javax.mail.MessagingException
setContentID in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic java.lang.String getContentMD5()
throws javax.mail.MessagingException
getContentMD5 in interface javax.mail.internet.MimePartgetContentMD5 in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic void setContentMD5(java.lang.String md5)
throws javax.mail.MessagingException
setContentMD5 in interface javax.mail.internet.MimePartsetContentMD5 in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic java.lang.String getDescription()
throws javax.mail.MessagingException
getDescription in interface javax.mail.PartgetDescription in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic void setDescription(java.lang.String description,
java.lang.String charset)
throws javax.mail.MessagingException
setDescription in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic java.lang.String getMessageID()
throws javax.mail.MessagingException
getMessageID in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic java.lang.String getFileName()
throws javax.mail.MessagingException
getFileName in interface javax.mail.PartgetFileName in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic void setFileName(java.lang.String filename)
throws javax.mail.MessagingException
setFileName in interface javax.mail.PartsetFileName in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionprotected java.io.InputStream getContentStream()
throws javax.mail.MessagingException
getContentStream in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionMimeMessage.getContentStream()public javax.activation.DataHandler getDataHandler()
throws javax.mail.MessagingException
getDataHandler in interface javax.mail.PartgetDataHandler in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic void setDataHandler(javax.activation.DataHandler content)
throws javax.mail.MessagingException
setDataHandler in interface javax.mail.PartsetDataHandler in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic java.io.InputStream getMimeStream()
throws javax.mail.MessagingException
getMimeStream in interface com.sun.mail.util.ReadableMimejavax.mail.MessagingExceptionpublic void writeTo(java.io.OutputStream os)
throws java.io.IOException,
javax.mail.MessagingException
writeTo in interface javax.mail.PartwriteTo in class javax.mail.internet.MimeMessagejava.io.IOExceptionjavax.mail.MessagingExceptionpublic java.lang.String[] getHeader(java.lang.String name)
throws javax.mail.MessagingException
getHeader in interface javax.mail.PartgetHeader in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic java.lang.String getHeader(java.lang.String name,
java.lang.String delimiter)
throws javax.mail.MessagingException
getHeader in interface javax.mail.internet.MimePartgetHeader in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic void setHeader(java.lang.String name,
java.lang.String value)
throws javax.mail.MessagingException
setHeader in interface javax.mail.PartsetHeader in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic void addHeader(java.lang.String name,
java.lang.String value)
throws javax.mail.MessagingException
addHeader in interface javax.mail.PartaddHeader in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic void removeHeader(java.lang.String name)
throws javax.mail.MessagingException
removeHeader in interface javax.mail.PartremoveHeader in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic java.util.Enumeration<javax.mail.Header> getAllHeaders()
throws javax.mail.MessagingException
getAllHeaders in interface javax.mail.PartgetAllHeaders in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic java.util.Enumeration<javax.mail.Header> getMatchingHeaders(java.lang.String[] names)
throws javax.mail.MessagingException
getMatchingHeaders in interface javax.mail.PartgetMatchingHeaders in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic java.util.Enumeration<javax.mail.Header> getNonMatchingHeaders(java.lang.String[] names)
throws javax.mail.MessagingException
getNonMatchingHeaders in interface javax.mail.PartgetNonMatchingHeaders in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic void addHeaderLine(java.lang.String line)
throws javax.mail.MessagingException
addHeaderLine in interface javax.mail.internet.MimePartaddHeaderLine in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic java.util.Enumeration<java.lang.String> getAllHeaderLines()
throws javax.mail.MessagingException
getAllHeaderLines in interface javax.mail.internet.MimePartgetAllHeaderLines in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic java.util.Enumeration<java.lang.String> getMatchingHeaderLines(java.lang.String[] names)
throws javax.mail.MessagingException
getMatchingHeaderLines in interface javax.mail.internet.MimePartgetMatchingHeaderLines in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic java.util.Enumeration<java.lang.String> getNonMatchingHeaderLines(java.lang.String[] names)
throws javax.mail.MessagingException
getNonMatchingHeaderLines in interface javax.mail.internet.MimePartgetNonMatchingHeaderLines in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic javax.mail.Flags getFlags()
throws javax.mail.MessagingException
getFlags in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic boolean isSet(javax.mail.Flags.Flag flag)
throws javax.mail.MessagingException
isSet in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic void setFlags(javax.mail.Flags flag,
boolean set)
throws javax.mail.MessagingException
setFlags in class javax.mail.internet.MimeMessagejavax.mail.MessagingExceptionpublic void setPeek(boolean peek)
peek - the peek flagpublic boolean getPeek()
public void invalidateHeaders()
protected boolean handleFetchItem(com.sun.mail.imap.protocol.Item item,
java.lang.String[] hdrs,
boolean allHeaders)
throws javax.mail.MessagingException
item - the fetch itemhdrs - the headers we're asking forallHeaders - load all headers?javax.mail.MessagingException - for failuresprotected void handleExtensionFetchItems(java.util.Map<java.lang.String,java.lang.Object> extensionItems)
extensionItems - the Map to add fetch items toprotected java.lang.Object fetchItem(com.sun.mail.imap.protocol.FetchItem fitem)
throws javax.mail.MessagingException
fitem - the FetchItemjavax.mail.MessagingException - for failurespublic java.lang.Object getItem(com.sun.mail.imap.protocol.FetchItem fitem)
throws javax.mail.MessagingException
fitem - the FetchItemjavax.mail.MessagingException - for failures