public interface ImapHostManager
String parameters representing mailbox names must be the
full hierarchical name of the target, with namespace, as used by the
specified user. Examples:
'#mail.Inbox' or '#shared.finance.Q2Earnings'.
An imap Host must keep track of existing and deleted mailboxes.
References: rfc 2060, rfc 2193, rfc 2221
| Modifier and Type | Method and Description |
|---|---|
MailFolder |
createMailbox(GreenMailUser user,
String mailboxName)
Returns a reference to a newly created Mailbox.
|
void |
createPrivateMailAccount(GreenMailUser user)
Registers a user with the ImapHost, creating a personal mail space and
INBOX for that user.
|
void |
deleteMailbox(GreenMailUser user,
String mailboxName)
Deletes an existing MailBox.
|
List<StoredMessage> |
getAllMessages()
Returns all messages.
|
MailFolder |
getFolder(GreenMailUser user,
String mailboxName)
Returns a reference to an existing Mailbox.
|
MailFolder |
getFolder(GreenMailUser user,
String mailboxName,
boolean mustExist)
Returns a reference to an existing Mailbox.
|
char |
getHierarchyDelimiter()
Returns the hierarchy delimiter for mailboxes on this host.
|
MailFolder |
getInbox(GreenMailUser user)
Returns a reference to the user's INBOX.
|
Store |
getStore()
Gets the store underneath.
|
Collection<MailFolder> |
listMailboxes(GreenMailUser user,
String mailboxPattern)
Returns an collection of mailboxes on this host.
|
Collection<MailFolder> |
listSubscribedMailboxes(GreenMailUser user,
String mailboxPattern)
Returns an collection of mailboxes on this host.
|
void |
renameMailbox(GreenMailUser user,
String oldMailboxName,
String newMailboxName)
Renames an existing MailBox.
|
void |
subscribe(GreenMailUser user,
String mailbox)
Subscribes a user to a mailbox.
|
void |
unsubscribe(GreenMailUser user,
String mailbox)
Unsubscribes from a given mailbox.
|
List<StoredMessage> getAllMessages()
char getHierarchyDelimiter()
MailFolder getFolder(GreenMailUser user, String mailboxName)
TODO: should default behaviour be to return null?
user - User making the request.mailboxName - String name of the target.MailFolder getFolder(GreenMailUser user, String mailboxName, boolean mustExist) throws FolderException
null in
this case.user - User making the request.mailboxName - String name of the target.mustExist - Specified behaviour where a mailbox is missing or non-viewable.FolderException - if mailbox does not exist locally, and mustExist is true.MailFolder getInbox(GreenMailUser user) throws FolderException
createPrivateMailAccount(com.icegreen.greenmail.user.GreenMailUser) method.user - The user making the request.FolderException - if the user doesn't have an inbox on this server.void createPrivateMailAccount(GreenMailUser user) throws FolderException
user - The user to register with the Host.FolderException - if an error occurred creating the user account.MailFolder createMailbox(GreenMailUser user, String mailboxName) throws AuthorizationException, FolderException
user - User making the request.mailboxName - String name of the targetFolderException - if mailbox already exists, locally or remotely,
or if mailbox cannot be created locally.AuthorizationException - if mailbox could be created locally but
user does not have create rights.void deleteMailbox(GreenMailUser user, String mailboxName) throws FolderException, AuthorizationException
user - User making the request.mailboxName - String name of the targetFolderException - if mailbox does not exist locally or is any
identities INBOX.AuthorizationException - if mailbox exists locally but user does
not have rights to delete it.void renameMailbox(GreenMailUser user, String oldMailboxName, String newMailboxName) throws FolderException, AuthorizationException
user - User making the request.oldMailboxName - String name of the existing mailboxnewMailboxName - String target new nameFolderException - if mailbox does not exist locally, or there
is an existing mailbox with the new name.AuthorizationException - if user does not have rights to delete
the existing mailbox or create the new mailbox.Collection<MailFolder> listMailboxes(GreenMailUser user, String mailboxPattern) throws FolderException
The reference name must be non-empty. If the mailbox name is empty, implementations must not throw either exception but must return a single String (described below) if the reference name specifies a local mailbox accessible to the user and a one-character String containing the hierarchy delimiter of the referenced namespace, otherwise.
Each String returned should be a space seperated triple of name attributes, hierarchy delimiter and full mailbox name. The mailbox name should include the namespace and be relative to the specified user.
RFC comments: Implementations SHOULD return quickly. They SHOULD NOT go to excess trouble to calculate\Marked or \Unmarked status.
JAMES comment: By elimination, implementations should usually include \Noinferiors or \Noselect, if appropriate. Also, if the reference name and mailbox name resolve to a single local mailbox, implementations should establish all attributes.
user - User making the requestmailboxPattern - String name of a mailbox possible including a
wildcard.FolderException - if the referenceName is not local or if
referenceName and mailbox name resolve to a single mailbox which does
not exist locally.Collection<MailFolder> listSubscribedMailboxes(GreenMailUser user, String mailboxPattern) throws FolderException
The reference name must be non-empty. If the mailbox name is empty, implementations must not throw either exception but must return a single String (described below) if the reference name specifies a local mailbox accessible to the user and a one-character String containing the hierarchy delimiter of the referenced namespace, otherwise.
Each String returned should be a space seperated triple of name attributes, hierarchy delimiter and full mailbox name. The mailbox name should include the namespace and be relative to the specified user.
RFC comments: Implementations SHOULD return quickly. They SHOULD NOT go to excess trouble to calculate\Marked or \Unmarked status.
JAMES comment: By elimination, implementations should usually include \Noinferiors or \Noselect, if appropriate. Also, if the reference name and mailbox name resolve to a single local mailbox, implementations should establish all attributes.
Note that servers cannot unilaterally remove mailboxes from the subscribed list. A request that attempts to list a deleted, but subscribed, mailbox must return that mailbox with the \Noselect attribute.
user - User making the requestmailboxPattern - String name of a mailbox possible including a
wildcard.FolderException - if the referenceName is not local or if
referenceName and mailbox name resolve to a single mailbox which does
not exist locally.void subscribe(GreenMailUser user, String mailbox) throws FolderException
user - User making the requestmailbox - String representation of a mailbox name.FolderException - if the mailbox does not exist locally (for the user).void unsubscribe(GreenMailUser user, String mailbox) throws FolderException
user - String representation of an email addressmailbox - String representation of a mailbox name.FolderException - if the mailbox does not exist locally (for the user).Store getStore()
Copyright © 2006–2022 Icegreen Technologies. All rights reserved.