Module jakarta.mail

Class POP3Folder

  • All Implemented Interfaces:
    java.lang.AutoCloseable

    public class POP3Folder
    extends Folder
    A POP3 Folder (can only be "INBOX"). See the com.sun.mail.pop3 package documentation for further information on the POP3 protocol provider.

    Author:
    Bill Shannon, John Mani (ported to the javax.mail APIs)
    • Constructor Detail

      • POP3Folder

        protected POP3Folder​(POP3Store store,
                             java.lang.String name)
    • Method Detail

      • getName

        public java.lang.String getName()
        Description copied from class: Folder
        Returns the name of this Folder.

        This method can be invoked on a closed Folder.

        Specified by:
        getName in class Folder
        Returns:
        name of the Folder
      • getFullName

        public java.lang.String getFullName()
        Description copied from class: Folder
        Returns the full name of this Folder. If the folder resides under the root hierarchy of this Store, the returned name is relative to the root. Otherwise an absolute name, starting with the hierarchy delimiter, is returned.

        This method can be invoked on a closed Folder.

        Specified by:
        getFullName in class Folder
        Returns:
        full name of the Folder
      • getParent

        public Folder getParent()
        Description copied from class: Folder
        Returns the parent folder of this folder. This method can be invoked on a closed Folder. If this folder is the top of a folder hierarchy, this method returns null.

        Note that since Folder objects are not cached, invoking this method returns a new distinct Folder object.

        Specified by:
        getParent in class Folder
        Returns:
        Parent folder
      • exists

        public boolean exists()
        Always true for the folder "INBOX", always false for any other name.
        Specified by:
        exists in class Folder
        Returns:
        true for INBOX, false otherwise
        See Also:
        Folder.create(int)
      • getSeparator

        public char getSeparator()
        Always returns a NUL character because POP3 doesn't support a hierarchy.
        Specified by:
        getSeparator in class Folder
        Returns:
        NUL
      • getFolder

        public Folder getFolder​(java.lang.String name)
                         throws MessagingException
        Always throws MessagingException because no POP3 folders can contain subfolders.
        Specified by:
        getFolder in class Folder
        Parameters:
        name - name of the Folder
        Returns:
        Folder object
        Throws:
        MessagingException - always
      • close

        public void close​(boolean expunge)
                   throws MessagingException
        Description copied from class: Folder
        Close this Folder. This method is valid only on open Folders.

        A CLOSED ConnectionEvent is delivered to any ConnectionListeners registered on this Folder. Note that the folder is closed even if this method terminates abnormally by throwing a MessagingException.

        Specified by:
        close in class Folder
        Parameters:
        expunge - expunges all deleted messages if this flag is true
        Throws:
        MessagingException - for other failures
        See Also:
        ConnectionEvent
      • isOpen

        public boolean isOpen()
        Description copied from class: Folder
        Indicates whether this Folder is in the 'open' state.
        Specified by:
        isOpen in class Folder
        Returns:
        true if this Folder is in the 'open' state.
      • getPermanentFlags

        public Flags getPermanentFlags()
        Always returns an empty Flags object because the POP3 protocol doesn't support any permanent flags.
        Specified by:
        getPermanentFlags in class Folder
        Returns:
        empty Flags object
      • getMessageCount

        public int getMessageCount()
                            throws MessagingException
        Will not change while the folder is open because the POP3 protocol doesn't support notification of new messages arriving in open folders.
        Specified by:
        getMessageCount in class Folder
        Returns:
        total number of messages. -1 may be returned by certain implementations if this method is invoked on a closed folder.
        Throws:
        FolderNotFoundException - if this folder does not exist.
        MessagingException - for other failures
      • getMessage

        public Message getMessage​(int msgno)
                           throws MessagingException
        Description copied from class: Folder
        Get the Message object corresponding to the given message number. A Message object's message number is the relative position of this Message in its Folder. Messages are numbered starting at 1 through the total number of message in the folder. Note that the message number for a particular Message can change during a session if other messages in the Folder are deleted and the Folder is expunged.

        Message objects are light-weight references to the actual message that get filled up on demand. Hence Folder implementations are expected to provide light-weight Message objects.

        Unlike Folder objects, repeated calls to getMessage with the same message number will return the same Message object, as long as no messages in this folder have been expunged.

        Since message numbers can change within a session if the folder is expunged , clients are advised not to use message numbers as references to messages. Use Message objects instead.

        Specified by:
        getMessage in class Folder
        Parameters:
        msgno - the message number
        Returns:
        the Message object
        Throws:
        FolderNotFoundException - if this folder does not exist.
        MessagingException - for other failures
        See Also:
        Folder.getMessageCount(), Folder.fetch(javax.mail.Message[], javax.mail.FetchProfile)
      • fetch

        public void fetch​(Message[] msgs,
                          FetchProfile fp)
                   throws MessagingException
        Prefetch information about POP3 messages. If the FetchProfile contains UIDFolder.FetchProfileItem.UID, POP3 UIDs for all messages in the folder are fetched using the POP3 UIDL command. If the FetchProfile contains FetchProfile.Item.ENVELOPE, the headers and size of all messages are fetched using the POP3 TOP and LIST commands.
        Overrides:
        fetch in class Folder
        Parameters:
        msgs - fetch items for these messages
        fp - the FetchProfile
        Throws:
        MessagingException - for other failures
      • getUID

        public java.lang.String getUID​(Message msg)
                                throws MessagingException
        Return the unique ID string for this message, or null if not available. Uses the POP3 UIDL command.
        Parameters:
        msg - the message
        Returns:
        unique ID string
        Throws:
        MessagingException - for failures
      • getSize

        public int getSize()
                    throws MessagingException
        Return the size of this folder, as was returned by the POP3 STAT command when this folder was opened.
        Returns:
        folder size
        Throws:
        java.lang.IllegalStateException - if the folder isn't open
        MessagingException - for other failures
      • getSizes

        public int[] getSizes()
                       throws MessagingException
        Return the sizes of all messages in this folder, as returned by the POP3 LIST command. Each entry in the array corresponds to a message; entry i corresponds to message number i+1.
        Returns:
        array of message sizes
        Throws:
        java.lang.IllegalStateException - if the folder isn't open
        MessagingException - for other failures
        Since:
        JavaMail 1.3.3
      • listCommand

        public java.io.InputStream listCommand()
                                        throws MessagingException,
                                               java.io.IOException
        Return the raw results of the POP3 LIST command with no arguments.
        Returns:
        InputStream containing results
        Throws:
        java.lang.IllegalStateException - if the folder isn't open
        java.io.IOException - for I/O errors talking to the server
        MessagingException - for other errors
        Since:
        JavaMail 1.3.3
      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        Close the folder when we're finalized.
        Overrides:
        finalize in class Folder
        Throws:
        java.lang.Throwable
      • notifyMessageChangedListeners

        protected void notifyMessageChangedListeners​(int type,
                                                     Message m)
        Description copied from class: Folder
        Notify all MessageChangedListeners. Folder implementations are expected to use this method to broadcast MessageChanged events.

        The provided implementation queues the event into an internal event queue. An event dispatcher thread dequeues events from the queue and dispatches them to registered MessageChangedListeners. Note that the event dispatching occurs in a separate thread, thus avoiding potential deadlock problems.

        Overrides:
        notifyMessageChangedListeners in class Folder
        Parameters:
        type - the MessageChangedEvent type
        m - the message that changed