IMAPClient
Date: 2016-06-23

org.apache.commons.net.imap

## Class IMAPClient

- java.lang.Object
- - org.apache.commons.net.SocketClient
  - - org.apache.commons.net.imap.IMAP
    - - org.apache.commons.net.imap.IMAPClient

- Direct Known Subclasses:
    IMAPSClient

      public class IMAPClient
      extends IMAP

  The IMAPClient class provides the basic functionalities found in an IMAP client.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `IMAPClient.FETCH_ITEM_NAMES` The message data item names for the FETCH command defined in RFC 3501.
    `static class` | `IMAPClient.SEARCH_CRITERIA` The search criteria defined in RFC 3501.
    `static class` | `IMAPClient.STATUS_DATA_ITEMS` The status data items defined in RFC 3501.

    - ### Nested classes/interfaces inherited from class org.apache.commons.net.imap.IMAP

      `IMAP.IMAPChunkListener, IMAP.IMAPState`

  - ### Field Summary

    - ### Fields inherited from class org.apache.commons.net.imap.IMAP

      `__DEFAULT_ENCODING, __writer, _reader, DEFAULT_PORT, TRUE_CHUNK_LISTENER`

    - ### Fields inherited from class org.apache.commons.net.SocketClient

      `_defaultPort_, _hostname_, _input_, _output_, _serverSocketFactory_, _socket_, _socketFactory_, _timeout_, connectTimeout, NETASCII_EOL`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `IMAPClient()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `append(java.lang.String mailboxName)` Deprecated. (3.4) Does not work; the message body is not optional. Use `append(String, String, String, String)` instead.
    `boolean` | `append(java.lang.String mailboxName, java.lang.String flags, java.lang.String datetime)` Deprecated. (3.4) Does not work; the message body is not optional. Use `append(String, String, String, String)` instead.
    `boolean` | `append(java.lang.String mailboxName, java.lang.String flags, java.lang.String datetime, java.lang.String message)` Send an APPEND command to the server.
    `boolean` | `capability()` Send a CAPABILITY command to the server.
    `boolean` | `check()` Send a CHECK command to the server.
    `boolean` | `close()` Send a CLOSE command to the server.
    `boolean` | `copy(java.lang.String sequenceSet, java.lang.String mailboxName)` Send a COPY command to the server.
    `boolean` | `create(java.lang.String mailboxName)` Send a CREATE command to the server.
    `boolean` | `delete(java.lang.String mailboxName)` Send a DELETE command to the server.
    `boolean` | `examine(java.lang.String mailboxName)` Send an EXAMINE command to the server.
    `boolean` | `expunge()` Send an EXPUNGE command to the server.
    `boolean` | `fetch(java.lang.String sequenceSet, java.lang.String itemNames)` Send a FETCH command to the server.
    `boolean` | `list(java.lang.String refName, java.lang.String mailboxName)` Send a LIST command to the server.
    `boolean` | `login(java.lang.String username, java.lang.String password)` Login to the IMAP server with the given username and password.
    `boolean` | `logout()` Send a LOGOUT command to the server.
    `boolean` | `lsub(java.lang.String refName, java.lang.String mailboxName)` Send an LSUB command to the server.
    `boolean` | `noop()` Send a NOOP command to the server.
    `boolean` | `rename(java.lang.String oldMailboxName, java.lang.String newMailboxName)` Send a RENAME command to the server.
    `boolean` | `search(java.lang.String criteria)` Send a SEARCH command to the server.
    `boolean` | `search(java.lang.String charset, java.lang.String criteria)` Send a SEARCH command to the server.
    `boolean` | `select(java.lang.String mailboxName)` Send a SELECT command to the server.
    `boolean` | `status(java.lang.String mailboxName, java.lang.String[] itemNames)` Send a STATUS command to the server.
    `boolean` | `store(java.lang.String sequenceSet, java.lang.String itemNames, java.lang.String itemValues)` Send a STORE command to the server.
    `boolean` | `subscribe(java.lang.String mailboxName)` Send a SUBSCRIBE command to the server.
    `boolean` | `uid(java.lang.String command, java.lang.String commandArgs)` Send a UID command to the server.
    `boolean` | `unsubscribe(java.lang.String mailboxName)` Send a UNSUBSCRIBE command to the server.

    - ### Methods inherited from class org.apache.commons.net.imap.IMAP

      `_connectAction_, disconnect, doCommand, doCommand, fireReplyReceived, generateCommandID, getReplyString, getReplyStrings, getState, sendCommand, sendCommand, sendCommand, sendCommand, sendData, setChunkListener, setState`

    - ### Methods inherited from class org.apache.commons.net.SocketClient

      `addProtocolCommandListener, connect, connect, connect, connect, connect, connect, createCommandSupport, fireCommandSent, getCharset, getCharsetName, getCommandSupport, getConnectTimeout, getDefaultPort, getDefaultTimeout, getKeepAlive, getLocalAddress, getLocalPort, getProxy, getReceiveBufferSize, getRemoteAddress, getRemotePort, getSendBufferSize, getServerSocketFactory, getSoLinger, getSoTimeout, getTcpNoDelay, isAvailable, isConnected, removeProtocolCommandListener, setCharset, setConnectTimeout, setDefaultPort, setDefaultTimeout, setKeepAlive, setProxy, setReceiveBufferSize, setSendBufferSize, setServerSocketFactory, setSocketFactory, setSoLinger, setSoTimeout, setTcpNoDelay, verifyRemote`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### IMAPClient

          public IMAPClient()

  - ### Method Detail

    - #### capability

          public boolean capability()
                             throws java.io.IOException

      Send a CAPABILITY command to the server.
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs

    - #### noop

          public boolean noop()
                       throws java.io.IOException

      Send a NOOP command to the server. This is useful for keeping a connection alive since most IMAP servers will timeout after 10 minutes of inactivity.
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.

    - #### logout

          public boolean logout()
                         throws java.io.IOException

      Send a LOGOUT command to the server. To fully disconnect from the server you must call disconnect(). A logout attempt is valid in any state. If the client is in the not authenticated or authenticated state, it enters the logout on a successful logout.
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.

    - #### login

          public boolean login(java.lang.String username,
                      java.lang.String password)
                        throws java.io.IOException

      Login to the IMAP server with the given username and password. You must first connect to the server with `connect` before attempting to login. A login attempt is only valid if the client is in the NOT_AUTH_STATE. After logging in, the client enters the AUTH_STATE.
      Parameters:
        `username` - The account name being logged in to.
        `password` - The plain text password of the account.
      Returns:
        True if the login attempt was successful, false if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs in the process of logging in.

    - #### select

          public boolean select(java.lang.String mailboxName)
                         throws java.io.IOException

      Send a SELECT command to the server.
      Parameters:
        `mailboxName` - The mailbox name to select.
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.

    - #### examine

          public boolean examine(java.lang.String mailboxName)
                          throws java.io.IOException

      Send an EXAMINE command to the server.
      Parameters:
        `mailboxName` - The mailbox name to examine.
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.

    - #### create

          public boolean create(java.lang.String mailboxName)
                         throws java.io.IOException

      Send a CREATE command to the server.
      Parameters:
        `mailboxName` - The mailbox name to create.
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.

    - #### delete

          public boolean delete(java.lang.String mailboxName)
                         throws java.io.IOException

      Send a DELETE command to the server.
      Parameters:
        `mailboxName` - The mailbox name to delete.
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.

    - #### rename

          public boolean rename(java.lang.String oldMailboxName,
                       java.lang.String newMailboxName)
                         throws java.io.IOException

      Send a RENAME command to the server.
      Parameters:
        `oldMailboxName` - The existing mailbox name to rename.
        `newMailboxName` - The new mailbox name.
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.

    - #### subscribe

          public boolean subscribe(java.lang.String mailboxName)
                            throws java.io.IOException

      Send a SUBSCRIBE command to the server.
      Parameters:
        `mailboxName` - The mailbox name to subscribe to.
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.

    - #### unsubscribe

          public boolean unsubscribe(java.lang.String mailboxName)
                              throws java.io.IOException

      Send a UNSUBSCRIBE command to the server.
      Parameters:
        `mailboxName` - The mailbox name to unsubscribe from.
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.

    - #### list

          public boolean list(java.lang.String refName,
                     java.lang.String mailboxName)
                       throws java.io.IOException

      Send a LIST command to the server.
      Parameters:
        `refName` - The reference name.
        `mailboxName` - The mailbox name.
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.

    - #### lsub

          public boolean lsub(java.lang.String refName,
                     java.lang.String mailboxName)
                       throws java.io.IOException

      Send an LSUB command to the server.
      Parameters:
        `refName` - The reference name.
        `mailboxName` - The mailbox name.
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.

    - #### status

          public boolean status(java.lang.String mailboxName,
                       java.lang.String[] itemNames)
                         throws java.io.IOException

      Send a STATUS command to the server.
      Parameters:
        `mailboxName` - The reference name.
        `itemNames` - The status data item names.
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.

    - #### append

          public boolean append(java.lang.String mailboxName,
                       java.lang.String flags,
                       java.lang.String datetime,
                       java.lang.String message)
                         throws java.io.IOException

      Send an APPEND command to the server.
      Parameters:
        `mailboxName` - The mailbox name.
        `flags` - The flag parenthesized list (optional).
        `datetime` - The date/time string (optional).
        `message` - The message to append.
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.
      Since:
        3.4

    - #### append

          @Deprecated
          public boolean append(java.lang.String mailboxName,
                                  java.lang.String flags,
                                  java.lang.String datetime)
                         throws java.io.IOException

      Deprecated. (3.4) Does not work; the message body is not optional. Use `append(String, String, String, String)` instead.
      Send an APPEND command to the server.
      Parameters:
        `mailboxName` - The mailbox name.
        `flags` - The flag parenthesized list (optional).
        `datetime` - The date/time string (optional).
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.

    - #### append

          @Deprecated
          public boolean append(java.lang.String mailboxName)
                         throws java.io.IOException

      Deprecated. (3.4) Does not work; the message body is not optional. Use `append(String, String, String, String)` instead.
      Send an APPEND command to the server.
      Parameters:
        `mailboxName` - The mailbox name.
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.

    - #### check

          public boolean check()
                        throws java.io.IOException

      Send a CHECK command to the server.
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.

    - #### close

          public boolean close()
                        throws java.io.IOException

      Send a CLOSE command to the server.
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.

    - #### expunge

          public boolean expunge()
                          throws java.io.IOException

      Send an EXPUNGE command to the server.
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.

    - #### search

          public boolean search(java.lang.String charset,
                       java.lang.String criteria)
                         throws java.io.IOException

      Send a SEARCH command to the server.
      Parameters:
        `charset` - The charset (optional).
        `criteria` - The search criteria.
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.

    - #### search

          public boolean search(java.lang.String criteria)
                         throws java.io.IOException

      Send a SEARCH command to the server.
      Parameters:
        `criteria` - The search criteria.
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.

    - #### fetch

          public boolean fetch(java.lang.String sequenceSet,
                      java.lang.String itemNames)
                        throws java.io.IOException

      Send a FETCH command to the server.
      Parameters:
        `sequenceSet` - The sequence set to fetch (e.g. 1:4,6,11,100:*)
        `itemNames` - The item names for the FETCH command. (e.g. BODY.PEEK[HEADER.FIELDS (SUBJECT)]) If multiple item names are requested, these must be enclosed in parentheses, e.g. "(UID FLAGS BODY.PEEK[])"
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.
      See Also:
        `IMAP.getReplyString()`, `IMAP.getReplyStrings()`

    - #### store

          public boolean store(java.lang.String sequenceSet,
                      java.lang.String itemNames,
                      java.lang.String itemValues)
                        throws java.io.IOException

      Send a STORE command to the server.
      Parameters:
        `sequenceSet` - The sequence set to update (e.g. 2:5)
        `itemNames` - The item name for the STORE command (i.e. [+|-]FLAGS[.SILENT])
        `itemValues` - The item values for the STORE command. (e.g. (\Deleted) )
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.

    - #### copy

          public boolean copy(java.lang.String sequenceSet,
                     java.lang.String mailboxName)
                       throws java.io.IOException

      Send a COPY command to the server.
      Parameters:
        `sequenceSet` - The sequence set to fetch.
        `mailboxName` - The mailbox name.
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.

    - #### uid

          public boolean uid(java.lang.String command,
                    java.lang.String commandArgs)
                      throws java.io.IOException

      Send a UID command to the server.
      Parameters:
        `command` - The command for UID.
        `commandArgs` - The arguments for the command.
      Returns:
        `true` if the command was successful,`false` if not.
      Throws:
        `java.io.IOException` - If a network I/O error occurs.