- java.lang.Object
-
- javax.mail.Folder
-
- com.sun.mail.pop3.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)
-
-
Field Summary
-
Fields inherited from class javax.mail.Folder
HOLDS_FOLDERS, HOLDS_MESSAGES, mode, READ_ONLY, READ_WRITE
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
POP3Folder(POP3Store store, java.lang.String name)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
appendMessages(Message[] msgs)
Always throwsMethodNotSupportedException
because the POP3 protocol doesn't support appending messages.void
close(boolean expunge)
Close this Folder.boolean
create(int type)
Always returnsfalse
; the POP3 protocol doesn't support creating folders.protected POP3Message
createMessage(Folder f, int msgno)
boolean
delete(boolean recurse)
Always throwsMethodNotSupportedException
because the POP3 protocol doesn't allow the INBOX to be deleted.boolean
exists()
Always true for the folder "INBOX", always false for any other name.Message[]
expunge()
Always throwsMethodNotSupportedException
because the POP3 protocol doesn't support expunging messages without closing the folder; call theclose
method with theexpunge
argument set totrue
instead.void
fetch(Message[] msgs, FetchProfile fp)
Prefetch information about POP3 messages.protected void
finalize()
Close the folder when we're finalized.Folder
getFolder(java.lang.String name)
Always throwsMessagingException
because no POP3 folders can contain subfolders.java.lang.String
getFullName()
Returns the full name of this Folder.Message
getMessage(int msgno)
Get the Message object corresponding to the given message number.int
getMessageCount()
Will not change while the folder is open because the POP3 protocol doesn't support notification of new messages arriving in open folders.java.lang.String
getName()
Returns the name of this Folder.Folder
getParent()
Returns the parent folder of this folder.Flags
getPermanentFlags()
Always returns an emptyFlags
object because the POP3 protocol doesn't support any permanent flags.char
getSeparator()
Always returns a NUL character because POP3 doesn't support a hierarchy.int
getSize()
Return the size of this folder, as was returned by the POP3 STAT command when this folder was opened.int[]
getSizes()
Return the sizes of all messages in this folder, as returned by the POP3 LIST command.int
getType()
Always returns Folder.HOLDS_MESSAGES.java.lang.String
getUID(Message msg)
Return the unique ID string for this message, or null if not available.boolean
hasNewMessages()
Always returnsfalse
; the POP3 protocol provides no way to determine when a new message arrives.boolean
isOpen()
Indicates whether this Folder is in the 'open' state.Folder[]
list(java.lang.String pattern)
Always throwsMessagingException
because no POP3 folders can contain subfolders.java.io.InputStream
listCommand()
Return the raw results of the POP3 LIST command with no arguments.protected void
notifyMessageChangedListeners(int type, Message m)
Notify all MessageChangedListeners.void
open(int mode)
ThrowsFolderNotFoundException
unless this folder is named "INBOX".boolean
renameTo(Folder f)
Always throwsMethodNotSupportedException
because the POP3 protocol doesn't support multiple folders.-
Methods inherited from class javax.mail.Folder
addConnectionListener, addFolderListener, addMessageChangedListener, addMessageCountListener, close, copyMessages, getDeletedMessageCount, getMessages, getMessages, getMessages, getMode, getNewMessageCount, getStore, getUnreadMessageCount, getURLName, isSubscribed, list, listSubscribed, listSubscribed, notifyConnectionListeners, notifyFolderListeners, notifyFolderRenamedListeners, notifyMessageAddedListeners, notifyMessageRemovedListeners, removeConnectionListener, removeFolderListener, removeMessageChangedListener, removeMessageCountListener, search, search, setFlags, setFlags, setFlags, setSubscribed, toString
-
-
-
-
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.
-
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 classFolder
- 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.
-
exists
public boolean exists()
Always true for the folder "INBOX", always false for any other name.- Specified by:
exists
in classFolder
- Returns:
- true for INBOX, false otherwise
- See Also:
Folder.create(int)
-
list
public Folder[] list(java.lang.String pattern) throws MessagingException
Always throwsMessagingException
because no POP3 folders can contain subfolders.- Specified by:
list
in classFolder
- Parameters:
pattern
- the match pattern- Returns:
- array of matching Folder objects. An empty array is returned if no matching Folders exist.
- Throws:
MessagingException
- always- See Also:
Folder.listSubscribed(java.lang.String)
-
getSeparator
public char getSeparator()
Always returns a NUL character because POP3 doesn't support a hierarchy.- Specified by:
getSeparator
in classFolder
- Returns:
- NUL
-
getType
public int getType()
Always returns Folder.HOLDS_MESSAGES.- Specified by:
getType
in classFolder
- Returns:
- Folder.HOLDS_MESSAGES
- See Also:
Folder.HOLDS_FOLDERS
,Folder.HOLDS_MESSAGES
-
create
public boolean create(int type) throws MessagingException
Always returnsfalse
; the POP3 protocol doesn't support creating folders.- Specified by:
create
in classFolder
- Parameters:
type
- The type of this folder.- Returns:
- false
- Throws:
MessagingException
- for failures- See Also:
Folder.HOLDS_FOLDERS
,Folder.HOLDS_MESSAGES
,FolderEvent
-
hasNewMessages
public boolean hasNewMessages() throws MessagingException
Always returnsfalse
; the POP3 protocol provides no way to determine when a new message arrives.- Specified by:
hasNewMessages
in classFolder
- Returns:
- false
- Throws:
FolderNotFoundException
- if this folder does not exist.MessagingException
- for other failures
-
getFolder
public Folder getFolder(java.lang.String name) throws MessagingException
Always throwsMessagingException
because no POP3 folders can contain subfolders.- Specified by:
getFolder
in classFolder
- Parameters:
name
- name of the Folder- Returns:
- Folder object
- Throws:
MessagingException
- always
-
delete
public boolean delete(boolean recurse) throws MessagingException
Always throwsMethodNotSupportedException
because the POP3 protocol doesn't allow the INBOX to be deleted.- Specified by:
delete
in classFolder
- Parameters:
recurse
- also delete subfolders?- Returns:
- true if the Folder is deleted successfully
- Throws:
MethodNotSupportedException
- alwaysFolderNotFoundException
- if this folder does not existMessagingException
- for other failures- See Also:
FolderEvent
-
renameTo
public boolean renameTo(Folder f) throws MessagingException
Always throwsMethodNotSupportedException
because the POP3 protocol doesn't support multiple folders.- Specified by:
renameTo
in classFolder
- Parameters:
f
- a folder representing the new name for this Folder- Returns:
- true if the Folder is renamed successfully
- Throws:
MethodNotSupportedException
- alwaysFolderNotFoundException
- if this folder does not existMessagingException
- for other failures- See Also:
FolderEvent
-
open
public void open(int mode) throws MessagingException
ThrowsFolderNotFoundException
unless this folder is named "INBOX".- Specified by:
open
in classFolder
- Parameters:
mode
- open the Folder READ_ONLY or READ_WRITE- Throws:
FolderNotFoundException
- if not INBOXAuthenticationFailedException
- authentication failuresMessagingException
- other open failures- See Also:
Folder.READ_ONLY
,Folder.READ_WRITE
,Folder.getType()
,ConnectionEvent
-
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 classFolder
- 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.
-
getPermanentFlags
public Flags getPermanentFlags()
Always returns an emptyFlags
object because the POP3 protocol doesn't support any permanent flags.- Specified by:
getPermanentFlags
in classFolder
- 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 classFolder
- 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 classFolder
- 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)
-
createMessage
protected POP3Message createMessage(Folder f, int msgno) throws MessagingException
- Throws:
MessagingException
-
appendMessages
public void appendMessages(Message[] msgs) throws MessagingException
Always throwsMethodNotSupportedException
because the POP3 protocol doesn't support appending messages.- Specified by:
appendMessages
in classFolder
- Parameters:
msgs
- array of Messages to be appended- Throws:
MethodNotSupportedException
- alwaysFolderNotFoundException
- if this folder does not exist.MessagingException
- if the append failed.
-
expunge
public Message[] expunge() throws MessagingException
Always throwsMethodNotSupportedException
because the POP3 protocol doesn't support expunging messages without closing the folder; call theclose
method with theexpunge
argument set totrue
instead.- Specified by:
expunge
in classFolder
- Returns:
- array of expunged Message objects
- Throws:
MethodNotSupportedException
- alwaysFolderNotFoundException
- if this folder does not existMessagingException
- for other failures- See Also:
Message.isExpunged()
,MessageCountEvent
-
fetch
public void fetch(Message[] msgs, FetchProfile fp) throws MessagingException
Prefetch information about POP3 messages. If the FetchProfile containsUIDFolder.FetchProfileItem.UID
, POP3 UIDs for all messages in the folder are fetched using the POP3 UIDL command. If the FetchProfile containsFetchProfile.Item.ENVELOPE
, the headers and size of all messages are fetched using the POP3 TOP and LIST commands.- Overrides:
fetch
in classFolder
- Parameters:
msgs
- fetch items for these messagesfp
- 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 openMessagingException
- 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 openMessagingException
- 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 openjava.io.IOException
- for I/O errors talking to the serverMessagingException
- for other errors- Since:
- JavaMail 1.3.3
-
finalize
protected void finalize() throws java.lang.Throwable
Close the folder when we're finalized.
-
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 classFolder
- Parameters:
type
- the MessageChangedEvent typem
- the message that changed
-
-