Class IMAPMessage

  • All Implemented Interfaces:
    jakarta.mail.internet.MimePart, jakarta.mail.Part, ReadableMime
    Direct Known Subclasses:
    IMAPNestedMessage

    public class IMAPMessage
    extends jakarta.mail.internet.MimeMessage
    implements ReadableMime
    This class implements an IMAPMessage object.

    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.

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  IMAPMessage.FetchProfileCondition
      This class implements the test to be done on each message in the folder.
      • Nested classes/interfaces inherited from class jakarta.mail.internet.MimeMessage

        jakarta.mail.internet.MimeMessage.RecipientType
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected BODYSTRUCTURE bs  
      protected 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  
      • Fields inherited from class jakarta.mail.internet.MimeMessage

        cachedContent, content, contentStream, dh, flags, headers, modified, saved
      • Fields inherited from class jakarta.mail.Message

        expunged, folder, msgnum, session
      • Fields inherited from interface jakarta.mail.Part

        ATTACHMENT, INLINE
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected IMAPMessage​(jakarta.mail.Session session)
      Constructor, for use by IMAPNestedMessage.
      protected IMAPMessage​(IMAPFolder folder, int msgnum)
      Constructor.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addFrom​(jakarta.mail.Address[] addresses)  
      void addHeader​(java.lang.String name, java.lang.String value)  
      void addHeaderLine​(java.lang.String line)  
      void addRecipients​(jakarta.mail.Message.RecipientType type, jakarta.mail.Address[] addresses)  
      protected void checkExpunged()  
      protected java.lang.Object fetchItem​(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<jakarta.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.
      jakarta.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.
      jakarta.mail.Flags getFlags()
      Get the Flags for this message.
      jakarta.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​(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<jakarta.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<jakarta.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 IMAPProtocol getProtocol()
      Get this message's folder's protocol connection.
      java.util.Date getReceivedDate()
      Get the received date (INTERNALDATE).
      jakarta.mail.Address[] getRecipients​(jakarta.mail.Message.RecipientType type)
      Get the desired Recipient type.
      jakarta.mail.Address[] getReplyTo()
      Get the ReplyTo addresses.
      jakarta.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​(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​(jakarta.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​(jakarta.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​(jakarta.mail.Flags flag, boolean set)
      Set/Unset the given flags in this message.
      void setFrom​(jakarta.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​(jakarta.mail.Message.RecipientType type, jakarta.mail.Address[] addresses)  
      void setReplyTo​(jakarta.mail.Address[] addresses)  
      void setSender​(jakarta.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.
      • Methods inherited from class jakarta.mail.internet.MimeMessage

        addRecipients, createInternetHeaders, createMimeMessage, getAllRecipients, getContent, getInputStream, getRawInputStream, isMimeType, parse, reply, reply, saveChanges, setContent, setContent, setDescription, setFrom, setFrom, setRecipients, setSubject, setText, setText, setText, updateHeaders, updateMessageID, writeTo
      • Methods inherited from class jakarta.mail.Message

        addRecipient, getFolder, getMessageNumber, getSession, isExpunged, match, setFlag, setRecipient
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • items

        protected java.util.Map<java.lang.String,​java.lang.Object> items
        A map of the extension FETCH items. In addition to saving the data in this map, an entry in this map indicates that we *have* the data, and so it doesn't need to be fetched again. The map is created only when needed, to avoid significantly increasing the effective size of an IMAPMessage object.
        Since:
        JavaMail 1.4.6
      • sectionId

        protected java.lang.String sectionId
    • Constructor Detail

      • IMAPMessage

        protected IMAPMessage​(IMAPFolder folder,
                              int msgnum)
        Constructor.
        Parameters:
        folder - the folder containing this message
        msgnum - the message sequence number
      • IMAPMessage

        protected IMAPMessage​(jakarta.mail.Session session)
        Constructor, for use by IMAPNestedMessage.
        Parameters:
        session - the Session
    • Method Detail

      • getProtocol

        protected IMAPProtocol getProtocol()
                                    throws ProtocolException,
                                           jakarta.mail.FolderClosedException
        Get this message's folder's protocol connection. Throws FolderClosedException, if the protocol connection is not available. ASSERT: Must hold the messageCacheLock.
        Returns:
        the IMAPProtocol object for the containing folder
        Throws:
        ProtocolException - for protocol errors
        jakarta.mail.FolderClosedException - if the folder is closed
      • isREV1

        protected boolean isREV1()
                          throws jakarta.mail.FolderClosedException
        Throws:
        jakarta.mail.FolderClosedException
      • getMessageCacheLock

        protected java.lang.Object getMessageCacheLock()
        Get the messageCacheLock, associated with this Message's Folder.
        Returns:
        the message cache lock object
      • getSequenceNumber

        protected int getSequenceNumber()
        Get this message's IMAP sequence number. ASSERT: This method must be called only when holding the messageCacheLock.
        Returns:
        the message sequence number
      • setMessageNumber

        protected void setMessageNumber​(int msgnum)
        Wrapper around the protected method Message.setMessageNumber() to make that method accessible to IMAPFolder.
        Overrides:
        setMessageNumber in class jakarta.mail.Message
      • getUID

        protected long getUID()
        Return the UID for this message. Returns -1 if not known; use UIDFolder.getUID() in this case.
        Returns:
        the UID
        See Also:
        UIDFolder.getUID(jakarta.mail.Message)
      • setUID

        protected void setUID​(long uid)
      • getModSeq

        public long getModSeq()
                       throws jakarta.mail.MessagingException
        Return the modification sequence number (MODSEQ) for this message. Returns -1 if not known.
        Returns:
        the modification sequence number
        Throws:
        jakarta.mail.MessagingException - for failures
        Since:
        JavaMail 1.5.1
        See Also:
        "RFC 4551"
      • setExpunged

        protected void setExpunged​(boolean set)
        Overrides:
        setExpunged in class jakarta.mail.Message
      • checkExpunged

        protected void checkExpunged()
                              throws jakarta.mail.MessageRemovedException
        Throws:
        jakarta.mail.MessageRemovedException
      • forceCheckExpunged

        protected void forceCheckExpunged()
                                   throws jakarta.mail.MessageRemovedException,
                                          jakarta.mail.FolderClosedException
        Do a NOOP to force any untagged EXPUNGE responses and then check if this message is expunged.
        Throws:
        jakarta.mail.MessageRemovedException - if the message has been removed
        jakarta.mail.FolderClosedException - if the folder has been closed
      • getFetchBlockSize

        protected int getFetchBlockSize()
      • ignoreBodyStructureSize

        protected boolean ignoreBodyStructureSize()
      • getFrom

        public jakarta.mail.Address[] getFrom()
                                       throws jakarta.mail.MessagingException
        Get the "From" attribute.
        Overrides:
        getFrom in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • setFrom

        public void setFrom​(jakarta.mail.Address address)
                     throws jakarta.mail.MessagingException
        Overrides:
        setFrom in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • addFrom

        public void addFrom​(jakarta.mail.Address[] addresses)
                     throws jakarta.mail.MessagingException
        Overrides:
        addFrom in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getSender

        public jakarta.mail.Address getSender()
                                       throws jakarta.mail.MessagingException
        Get the "Sender" attribute.
        Overrides:
        getSender in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • setSender

        public void setSender​(jakarta.mail.Address address)
                       throws jakarta.mail.MessagingException
        Overrides:
        setSender in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getRecipients

        public jakarta.mail.Address[] getRecipients​(jakarta.mail.Message.RecipientType type)
                                             throws jakarta.mail.MessagingException
        Get the desired Recipient type.
        Overrides:
        getRecipients in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • setRecipients

        public void setRecipients​(jakarta.mail.Message.RecipientType type,
                                  jakarta.mail.Address[] addresses)
                           throws jakarta.mail.MessagingException
        Overrides:
        setRecipients in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • addRecipients

        public void addRecipients​(jakarta.mail.Message.RecipientType type,
                                  jakarta.mail.Address[] addresses)
                           throws jakarta.mail.MessagingException
        Overrides:
        addRecipients in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getReplyTo

        public jakarta.mail.Address[] getReplyTo()
                                          throws jakarta.mail.MessagingException
        Get the ReplyTo addresses.
        Overrides:
        getReplyTo in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • setReplyTo

        public void setReplyTo​(jakarta.mail.Address[] addresses)
                        throws jakarta.mail.MessagingException
        Overrides:
        setReplyTo in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getSubject

        public java.lang.String getSubject()
                                    throws jakarta.mail.MessagingException
        Get the decoded subject.
        Overrides:
        getSubject in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • setSubject

        public void setSubject​(java.lang.String subject,
                               java.lang.String charset)
                        throws jakarta.mail.MessagingException
        Overrides:
        setSubject in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getSentDate

        public java.util.Date getSentDate()
                                   throws jakarta.mail.MessagingException
        Get the SentDate.
        Overrides:
        getSentDate in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • setSentDate

        public void setSentDate​(java.util.Date d)
                         throws jakarta.mail.MessagingException
        Overrides:
        setSentDate in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getReceivedDate

        public java.util.Date getReceivedDate()
                                       throws jakarta.mail.MessagingException
        Get the received date (INTERNALDATE).
        Overrides:
        getReceivedDate in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getSize

        public int getSize()
                    throws jakarta.mail.MessagingException
        Get the message size.

        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.

        Specified by:
        getSize in interface jakarta.mail.Part
        Overrides:
        getSize in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getSizeLong

        public long getSizeLong()
                         throws jakarta.mail.MessagingException
        Get the message size as a long.

        Suitable for messages that might be larger than 2GB.

        Returns:
        the message size as a long integer
        Throws:
        jakarta.mail.MessagingException - for failures
        Since:
        JavaMail 1.6
      • getLineCount

        public int getLineCount()
                         throws jakarta.mail.MessagingException
        Get the total number of lines.

        Returns the "body_fld_lines" field from the BODYSTRUCTURE. Note that this field is available only for text/plain and message/rfc822 types

        Specified by:
        getLineCount in interface jakarta.mail.Part
        Overrides:
        getLineCount in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getContentLanguage

        public java.lang.String[] getContentLanguage()
                                              throws jakarta.mail.MessagingException
        Get the content language.
        Specified by:
        getContentLanguage in interface jakarta.mail.internet.MimePart
        Overrides:
        getContentLanguage in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • setContentLanguage

        public void setContentLanguage​(java.lang.String[] languages)
                                throws jakarta.mail.MessagingException
        Specified by:
        setContentLanguage in interface jakarta.mail.internet.MimePart
        Overrides:
        setContentLanguage in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getInReplyTo

        public java.lang.String getInReplyTo()
                                      throws jakarta.mail.MessagingException
        Get the In-Reply-To header.
        Returns:
        the In-Reply-To header
        Throws:
        jakarta.mail.MessagingException - for failures
        Since:
        JavaMail 1.3.3
      • getContentType

        public java.lang.String getContentType()
                                        throws jakarta.mail.MessagingException
        Get the Content-Type. Generate this header from the BODYSTRUCTURE. Append parameters as well.
        Specified by:
        getContentType in interface jakarta.mail.Part
        Overrides:
        getContentType in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getDisposition

        public java.lang.String getDisposition()
                                        throws jakarta.mail.MessagingException
        Get the Content-Disposition.
        Specified by:
        getDisposition in interface jakarta.mail.Part
        Overrides:
        getDisposition in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • setDisposition

        public void setDisposition​(java.lang.String disposition)
                            throws jakarta.mail.MessagingException
        Specified by:
        setDisposition in interface jakarta.mail.Part
        Overrides:
        setDisposition in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getEncoding

        public java.lang.String getEncoding()
                                     throws jakarta.mail.MessagingException
        Get the Content-Transfer-Encoding.
        Specified by:
        getEncoding in interface jakarta.mail.internet.MimePart
        Overrides:
        getEncoding in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getContentID

        public java.lang.String getContentID()
                                      throws jakarta.mail.MessagingException
        Get the Content-ID.
        Specified by:
        getContentID in interface jakarta.mail.internet.MimePart
        Overrides:
        getContentID in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • setContentID

        public void setContentID​(java.lang.String cid)
                          throws jakarta.mail.MessagingException
        Overrides:
        setContentID in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getContentMD5

        public java.lang.String getContentMD5()
                                       throws jakarta.mail.MessagingException
        Get the Content-MD5.
        Specified by:
        getContentMD5 in interface jakarta.mail.internet.MimePart
        Overrides:
        getContentMD5 in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • setContentMD5

        public void setContentMD5​(java.lang.String md5)
                           throws jakarta.mail.MessagingException
        Specified by:
        setContentMD5 in interface jakarta.mail.internet.MimePart
        Overrides:
        setContentMD5 in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getDescription

        public java.lang.String getDescription()
                                        throws jakarta.mail.MessagingException
        Get the decoded Content-Description.
        Specified by:
        getDescription in interface jakarta.mail.Part
        Overrides:
        getDescription in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • setDescription

        public void setDescription​(java.lang.String description,
                                   java.lang.String charset)
                            throws jakarta.mail.MessagingException
        Overrides:
        setDescription in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getMessageID

        public java.lang.String getMessageID()
                                      throws jakarta.mail.MessagingException
        Get the Message-ID.
        Overrides:
        getMessageID in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getFileName

        public java.lang.String getFileName()
                                     throws jakarta.mail.MessagingException
        Get the "filename" Disposition parameter. (Only available in IMAP4rev1). If thats not available, get the "name" ContentType parameter.
        Specified by:
        getFileName in interface jakarta.mail.Part
        Overrides:
        getFileName in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • setFileName

        public void setFileName​(java.lang.String filename)
                         throws jakarta.mail.MessagingException
        Specified by:
        setFileName in interface jakarta.mail.Part
        Overrides:
        setFileName in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getContentStream

        protected java.io.InputStream getContentStream()
                                                throws jakarta.mail.MessagingException
        Get all the bytes for this message. Overrides getContentStream() in MimeMessage. This method is ultimately used by the DataHandler to obtain the input stream for this message.
        Overrides:
        getContentStream in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
        See Also:
        MimeMessage.getContentStream()
      • getDataHandler

        public jakarta.activation.DataHandler getDataHandler()
                                                      throws jakarta.mail.MessagingException
        Get the DataHandler object for this message.
        Specified by:
        getDataHandler in interface jakarta.mail.Part
        Overrides:
        getDataHandler in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • setDataHandler

        public void setDataHandler​(jakarta.activation.DataHandler content)
                            throws jakarta.mail.MessagingException
        Specified by:
        setDataHandler in interface jakarta.mail.Part
        Overrides:
        setDataHandler in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getMimeStream

        public java.io.InputStream getMimeStream()
                                          throws jakarta.mail.MessagingException
        Return the MIME format stream corresponding to this message.
        Specified by:
        getMimeStream in interface ReadableMime
        Returns:
        the MIME format stream
        Throws:
        jakarta.mail.MessagingException - for failures
        Since:
        JavaMail 1.4.5
      • writeTo

        public void writeTo​(java.io.OutputStream os)
                     throws java.io.IOException,
                            jakarta.mail.MessagingException
        Write out the bytes into the given OutputStream.
        Specified by:
        writeTo in interface jakarta.mail.Part
        Overrides:
        writeTo in class jakarta.mail.internet.MimeMessage
        Throws:
        java.io.IOException
        jakarta.mail.MessagingException
      • getHeader

        public java.lang.String[] getHeader​(java.lang.String name)
                                     throws jakarta.mail.MessagingException
        Get the named header.
        Specified by:
        getHeader in interface jakarta.mail.Part
        Overrides:
        getHeader in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getHeader

        public java.lang.String getHeader​(java.lang.String name,
                                          java.lang.String delimiter)
                                   throws jakarta.mail.MessagingException
        Get the named header.
        Specified by:
        getHeader in interface jakarta.mail.internet.MimePart
        Overrides:
        getHeader in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • setHeader

        public void setHeader​(java.lang.String name,
                              java.lang.String value)
                       throws jakarta.mail.MessagingException
        Specified by:
        setHeader in interface jakarta.mail.Part
        Overrides:
        setHeader in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • addHeader

        public void addHeader​(java.lang.String name,
                              java.lang.String value)
                       throws jakarta.mail.MessagingException
        Specified by:
        addHeader in interface jakarta.mail.Part
        Overrides:
        addHeader in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • removeHeader

        public void removeHeader​(java.lang.String name)
                          throws jakarta.mail.MessagingException
        Specified by:
        removeHeader in interface jakarta.mail.Part
        Overrides:
        removeHeader in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getAllHeaders

        public java.util.Enumeration<jakarta.mail.Header> getAllHeaders()
                                                                 throws jakarta.mail.MessagingException
        Get all headers.
        Specified by:
        getAllHeaders in interface jakarta.mail.Part
        Overrides:
        getAllHeaders in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getMatchingHeaders

        public java.util.Enumeration<jakarta.mail.Header> getMatchingHeaders​(java.lang.String[] names)
                                                                      throws jakarta.mail.MessagingException
        Get matching headers.
        Specified by:
        getMatchingHeaders in interface jakarta.mail.Part
        Overrides:
        getMatchingHeaders in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getNonMatchingHeaders

        public java.util.Enumeration<jakarta.mail.Header> getNonMatchingHeaders​(java.lang.String[] names)
                                                                         throws jakarta.mail.MessagingException
        Get non-matching headers.
        Specified by:
        getNonMatchingHeaders in interface jakarta.mail.Part
        Overrides:
        getNonMatchingHeaders in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • addHeaderLine

        public void addHeaderLine​(java.lang.String line)
                           throws jakarta.mail.MessagingException
        Specified by:
        addHeaderLine in interface jakarta.mail.internet.MimePart
        Overrides:
        addHeaderLine in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getAllHeaderLines

        public java.util.Enumeration<java.lang.String> getAllHeaderLines()
                                                                  throws jakarta.mail.MessagingException
        Get all header-lines.
        Specified by:
        getAllHeaderLines in interface jakarta.mail.internet.MimePart
        Overrides:
        getAllHeaderLines in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getMatchingHeaderLines

        public java.util.Enumeration<java.lang.String> getMatchingHeaderLines​(java.lang.String[] names)
                                                                       throws jakarta.mail.MessagingException
        Get all matching header-lines.
        Specified by:
        getMatchingHeaderLines in interface jakarta.mail.internet.MimePart
        Overrides:
        getMatchingHeaderLines in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getNonMatchingHeaderLines

        public java.util.Enumeration<java.lang.String> getNonMatchingHeaderLines​(java.lang.String[] names)
                                                                          throws jakarta.mail.MessagingException
        Get all non-matching headerlines.
        Specified by:
        getNonMatchingHeaderLines in interface jakarta.mail.internet.MimePart
        Overrides:
        getNonMatchingHeaderLines in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • getFlags

        public jakarta.mail.Flags getFlags()
                                    throws jakarta.mail.MessagingException
        Get the Flags for this message.
        Overrides:
        getFlags in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • isSet

        public boolean isSet​(jakarta.mail.Flags.Flag flag)
                      throws jakarta.mail.MessagingException
        Test if the given Flags are set in this message.
        Overrides:
        isSet in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • setFlags

        public void setFlags​(jakarta.mail.Flags flag,
                             boolean set)
                      throws jakarta.mail.MessagingException
        Set/Unset the given flags in this message.
        Overrides:
        setFlags in class jakarta.mail.internet.MimeMessage
        Throws:
        jakarta.mail.MessagingException
      • setPeek

        public void setPeek​(boolean peek)
        Set whether or not to use the PEEK variant of FETCH when fetching message content. This overrides the default value from the "mail.imap.peek" property.
        Parameters:
        peek - the peek flag
        Since:
        JavaMail 1.3.3
      • getPeek

        public boolean getPeek()
        Get whether or not to use the PEEK variant of FETCH when fetching message content.
        Returns:
        the peek flag
        Since:
        JavaMail 1.3.3
      • invalidateHeaders

        public void invalidateHeaders()
        Invalidate cached header and envelope information for this message. Subsequent accesses of this information will cause it to be fetched from the server.
        Since:
        JavaMail 1.3.3
      • handleFetchItem

        protected boolean handleFetchItem​(Item item,
                                          java.lang.String[] hdrs,
                                          boolean allHeaders)
                                   throws jakarta.mail.MessagingException
        Apply the data in the FETCH item to this message. ASSERT: Must hold the messageCacheLock.
        Parameters:
        item - the fetch item
        hdrs - the headers we're asking for
        allHeaders - load all headers?
        Returns:
        did we handle this fetch item?
        Throws:
        jakarta.mail.MessagingException - for failures
        Since:
        JavaMail 1.4.6
      • handleExtensionFetchItems

        protected void handleExtensionFetchItems​(java.util.Map<java.lang.String,​java.lang.Object> extensionItems)
        Apply the data in the extension FETCH items to this message. This method adds all the items to the items map. Subclasses may override this method to call super and then also copy the data to a more convenient form. ASSERT: Must hold the messageCacheLock.
        Parameters:
        extensionItems - the Map to add fetch items to
        Since:
        JavaMail 1.4.6
      • fetchItem

        protected java.lang.Object fetchItem​(FetchItem fitem)
                                      throws jakarta.mail.MessagingException
        Fetch an individual item for the current message. Note that handleExtensionFetchItems will have been called to store this item in the message before this method returns.
        Parameters:
        fitem - the FetchItem
        Returns:
        the data associated with the FetchItem
        Throws:
        jakarta.mail.MessagingException - for failures
        Since:
        JavaMail 1.4.6
      • getItem

        public java.lang.Object getItem​(FetchItem fitem)
                                 throws jakarta.mail.MessagingException
        Return the data associated with the FetchItem. If the data hasn't been fetched, call the fetchItem method to fetch it. Returns null if there is no data for the FetchItem.
        Parameters:
        fitem - the FetchItem
        Returns:
        the data associated with the FetchItem
        Throws:
        jakarta.mail.MessagingException - for failures
        Since:
        JavaMail 1.4.6