Class IMAPStore
- All Implemented Interfaces:
ResponseHandler,AutoCloseable,QuotaAwareStore
- Direct Known Subclasses:
IMAPSSLStore
Applications that need to make use of IMAP-specific features may cast
a Store object to an IMAPStore object and
use the methods on this class. The getQuota and
setQuota methods support the IMAP QUOTA extension.
Refer to RFC 2087
for more information.
The id method supports the IMAP ID extension;
see RFC 2971.
The fields ID_NAME, ID_VERSION, etc. represent the suggested field names
in RFC 2971 section 3.3 and may be used as keys in the Map containing
client values or server values.
See the com.sun.mail.imap package documentation for further information on the IMAP protocol provider.
WARNING: The APIs unique to this class should be considered EXPERIMENTAL. They may be changed in the future in ways that are incompatible with applications using the current APIs.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final intA special event type for a StoreEvent to indicate an IMAP response, if the mail.imap.enableimapevents property is set. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()Close this Store.Get the default folder, representing the root of this user's namespace.Get named folder.Get named folder.Folder[]Using the IMAP NAMESPACE command (RFC 2342), return a set of folders representing the Personal namespaces.Get the user name to be used with the PROXYAUTH command.Quota[]Get the quotas for the named quota root.Folder[]Using the IMAP NAMESPACE command (RFC 2342), return a set of folders representing the Shared namespaces.Folder[]getUserNamespaces(String user) Using the IMAP NAMESPACE command (RFC 2342), return a set of folders representing the User's namespaces.voidResponse handler method.booleanhasCapability(String capability) Return true if the specified capability string is in the list of capabilities the server announced.Send the IMAP ID command (if supported by the server) and return the result from the server.voididle()Use the IMAP IDLE command (see RFC 2177), if supported by the server, to enter idle mode so that the server can send unsolicited notifications without the need for the client to constantly poll the server.booleanCheck whether this store is connected.booleanisSSL()Does this IMAPStore use SSL when connecting to the server?voidsetPassword(String password) Set the password that will be used for subsequent connections after this Store is first connected (for example, when creating a connection to open a Folder).voidsetProxyAuthUser(String user) Set the user name to be used with the PROXYAUTH command.voidSet the quotas for the quota root specified in the quota argument.voidsetUsername(String user) Set the user name that will be used for subsequent connections after this Store is first connected (for example, when creating a connection to open a Folder).Methods inherited from class javax.mail.Store
addFolderListener, addStoreListener, removeFolderListener, removeStoreListenerMethods inherited from class javax.mail.Service
addConnectionListener, connect, connect, connect, connect, getURLName, removeConnectionListener, toString
-
Field Details
-
RESPONSE
public static final int RESPONSEA special event type for a StoreEvent to indicate an IMAP response, if the mail.imap.enableimapevents property is set.- See Also:
-
ID_NAME
- See Also:
-
ID_VERSION
- See Also:
-
ID_OS
- See Also:
-
ID_OS_VERSION
- See Also:
-
ID_VENDOR
- See Also:
-
ID_SUPPORT_URL
- See Also:
-
ID_ADDRESS
- See Also:
-
ID_DATE
- See Also:
-
ID_COMMAND
- See Also:
-
ID_ARGUMENTS
- See Also:
-
ID_ENVIRONMENT
- See Also:
-
-
Constructor Details
-
IMAPStore
Constructor that takes a Session object and a URLName that represents a specific IMAP server.- Parameters:
session- the Sessionurl- the URLName of this store
-
-
Method Details
-
isSSL
public boolean isSSL()Does this IMAPStore use SSL when connecting to the server?- Returns:
- true if using SSL
- Since:
- JavaMail 1.4.6
-
setUsername
Set the user name that will be used for subsequent connections after this Store is first connected (for example, when creating a connection to open a Folder). This value is overridden by any call to the Store's connect method.Some IMAP servers may provide an authentication ID that can be used for more efficient authentication for future connections. This authentication ID is provided in a server-specific manner not described here.
Most applications will never need to use this method.
- Parameters:
user- the user name for the store- Since:
- JavaMail 1.3.3
-
setPassword
Set the password that will be used for subsequent connections after this Store is first connected (for example, when creating a connection to open a Folder). This value is overridden by any call to the Store's connect method.Most applications will never need to use this method.
- Parameters:
password- the password for the store- Since:
- JavaMail 1.3.3
-
hasCapability
Return true if the specified capability string is in the list of capabilities the server announced.- Parameters:
capability- the capability string- Returns:
- true if the server supports this capability
- Throws:
MessagingException- for failures- Since:
- JavaMail 1.3.3
-
setProxyAuthUser
Set the user name to be used with the PROXYAUTH command. The PROXYAUTH user name can also be set using themail.imap.proxyauth.userproperty when this Store is created.- Parameters:
user- the user name to set- Since:
- JavaMail 1.5.1
-
getProxyAuthUser
Get the user name to be used with the PROXYAUTH command.- Returns:
- the user name
- Since:
- JavaMail 1.5.1
-
isConnected
public boolean isConnected()Check whether this store is connected. Override superclass method, to actually ping our server connection.- Overrides:
isConnectedin classService- Returns:
- true if the service is connected, false if it is not connected
-
close
Close this Store.- Specified by:
closein interfaceAutoCloseable- Overrides:
closein classService- Throws:
MessagingException- for errors while closing- See Also:
-
getDefaultFolder
Get the default folder, representing the root of this user's namespace. Returns a closed DefaultFolder object.- Specified by:
getDefaultFolderin classStore- Returns:
- the root Folder
- Throws:
MessagingException- for other failures
-
getFolder
Get named folder. Returns a new, closed IMAPFolder.- Specified by:
getFolderin classStore- Parameters:
name- The name of the Folder. In some Stores, name can be an absolute path if it starts with the hierarchy delimiter. Else it is interpreted relative to the 'root' of this namespace.- Returns:
- Folder object
- Throws:
MessagingException- for other failures- See Also:
-
getFolder
Get named folder. Returns a new, closed IMAPFolder.- Specified by:
getFolderin classStore- Parameters:
url- URLName that denotes a folder- Returns:
- Folder object
- Throws:
MessagingException- for other failures- See Also:
-
getPersonalNamespaces
Using the IMAP NAMESPACE command (RFC 2342), return a set of folders representing the Personal namespaces.- Overrides:
getPersonalNamespacesin classStore- Returns:
- array of Folder objects
- Throws:
MessagingException- for other failures
-
getUserNamespaces
Using the IMAP NAMESPACE command (RFC 2342), return a set of folders representing the User's namespaces.- Overrides:
getUserNamespacesin classStore- Parameters:
user- the user name- Returns:
- array of Folder objects
- Throws:
MessagingException- for other failures
-
getQuota
Get the quotas for the named quota root. Quotas are controlled on the basis of a quota root, not (necessarily) a folder. The relationship between folders and quota roots depends on the IMAP server. Some servers might implement a single quota root for all folders owned by a user. Other servers might implement a separate quota root for each folder. A single folder can even have multiple quota roots, perhaps controlling quotas for different resources.- Specified by:
getQuotain interfaceQuotaAwareStore- Parameters:
root- the name of the quota root- Returns:
- array of Quota objects
- Throws:
MessagingException- if the server doesn't support the QUOTA extension
-
setQuota
Set the quotas for the quota root specified in the quota argument. Typically this will be one of the quota roots obtained from thegetQuotamethod, but it need not be.- Specified by:
setQuotain interfaceQuotaAwareStore- Parameters:
quota- the quota to set- Throws:
MessagingException- if the server doesn't support the QUOTA extension
-
handleResponse
Response handler method.- Specified by:
handleResponsein interfaceResponseHandler
-
idle
Use the IMAP IDLE command (see RFC 2177), if supported by the server, to enter idle mode so that the server can send unsolicited notifications without the need for the client to constantly poll the server. Use aConnectionListenerto be notified of events. When another thread (e.g., the listener thread) needs to issue an IMAP comand for this Store, the idle mode will be terminated and this method will return. Typically the caller will invoke this method in a loop.If the mail.imap.enableimapevents property is set, notifications received while the IDLE command is active will be delivered to
ConnectionListeners as events with a type ofIMAPStore.RESPONSE. The event's message will be the raw IMAP response string. Note that most IMAP servers will not deliver any events when using the IDLE command on a connection with no mailbox selected (i.e., this method). In most cases you'll want to use theidlemethod onIMAPFolder.NOTE: This capability is highly experimental and likely will change in future releases.
The mail.imap.minidletime property enforces a minimum delay before returning from this method, to ensure that other threads have a chance to issue commands before the caller invokes this method again. The default delay is 10 milliseconds.
- Throws:
MessagingException- if the server doesn't support the IDLE extensionIllegalStateException- if the store isn't connected- Since:
- JavaMail 1.4.1
-
id
Send the IMAP ID command (if supported by the server) and return the result from the server. The ID command identfies the client to the server and returns information about the server to the client. See RFC 2971. The returned Map is unmodifiable.- Parameters:
clientParams- a Map of keys and values identifying the client- Returns:
- a Map of keys and values identifying the server
- Throws:
MessagingException- if the server doesn't support the ID extension- Since:
- JavaMail 1.5.1
-