org.apache.commons.net.smtp

## Class AuthenticatingSMTPClient

- java.lang.Object
- - org.apache.commons.net.SocketClient
  - - org.apache.commons.net.smtp.SMTP
    - - org.apache.commons.net.smtp.SMTPClient
      - - org.apache.commons.net.smtp.SMTPSClient
        - - org.apache.commons.net.smtp.AuthenticatingSMTPClient

-     public class AuthenticatingSMTPClient
      extends SMTPSClient

  An SMTP Client class with authentication support (RFC4954).
  See Also:
    `SMTPClient`

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `AuthenticatingSMTPClient.AUTH_METHOD` The enumeration of currently-supported authentication methods.

  - ### Field Summary

    - ### Fields inherited from class org.apache.commons.net.smtp.SMTP

      `_commandSupport_, DEFAULT_PORT, encoding, reader, writer`

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

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

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AuthenticatingSMTPClient()` The default AuthenticatingSMTPClient constructor.
    `AuthenticatingSMTPClient(boolean implicit, SSLContext ctx)` Overloaded constructor that takes the implicit argument, and using `SMTPSClient.DEFAULT_PROTOCOL` i.e.
    `AuthenticatingSMTPClient(String protocol)` Overloaded constructor that takes a protocol specification
    `AuthenticatingSMTPClient(String proto, boolean implicit)` Overloaded constructor that takes a protocol specification and the implicit argument
    `AuthenticatingSMTPClient(String proto, boolean implicit, String encoding)` Overloaded constructor that takes the protocol specification, the implicit argument and encoding
    `AuthenticatingSMTPClient(String protocol, String encoding)` Overloaded constructor that takes a protocol specification and encoding

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `auth(AuthenticatingSMTPClient.AUTH_METHOD method, String user, String password)` Authenticate to the SMTP server by sending the AUTH command with the selected mechanism, using the given user and the given password.
    `int` | `ehlo(String hostname)` A convenience method to send the ESMTP EHLO command to the server, receive the reply, and return the reply code.
    `boolean` | `elogin()` Login to the ESMTP server by sending the EHLO command with the client hostname as an argument.
    `boolean` | `elogin(String hostname)` Login to the ESMTP server by sending the EHLO command with the given hostname as an argument.
    `int[]` | `getEnhancedReplyCode()` Gets the integer values of the enhanced reply code of the last SMTP reply.

    - ### Methods inherited from class org.apache.commons.net.smtp.SMTPSClient

      `_connectAction_, execTLS, getEnabledCipherSuites, getEnabledProtocols, getHostnameVerifier, getKeyManager, getTrustManager, isEndpointCheckingEnabled, setEnabledCipherSuites, setEnabledProtocols, setEndpointCheckingEnabled, setHostnameVerifier, setKeyManager, setTrustManager`

    - ### Methods inherited from class org.apache.commons.net.smtp.SMTPClient

      `addRecipient, addRecipient, completePendingCommand, listHelp, listHelp, login, login, logout, reset, sendMessageData, sendNoOp, sendShortMessageData, sendSimpleMessage, sendSimpleMessage, setSender, setSender, verify`

    - ### Methods inherited from class org.apache.commons.net.smtp.SMTP

      `data, disconnect, expn, getCommandSupport, getReply, getReplyCode, getReplyString, getReplyStrings, helo, help, help, mail, noop, quit, rcpt, removeProtocolCommandistener, rset, saml, send, sendCommand, sendCommand, sendCommand, sendCommand, soml, turn, vrfy`

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

      `addProtocolCommandListener, applySocketAttributes, checkOpenOutputStream, connect, connect, connect, connect, connect, connect, createCommandSupport, fireCommandSent, fireReplyReceived, getCharset, getConnectTimeout, getDefaultPort, getDefaultTimeout, getHostAddress, getHostAddress, getKeepAlive, getLocalAddress, getLocalPort, getProxy, getReceiveBufferSize, getRemoteAddress, getRemoteInetSocketAddress, 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

    - #### AuthenticatingSMTPClient

          public AuthenticatingSMTPClient()

      The default AuthenticatingSMTPClient constructor. Creates a new Authenticating SMTP Client.

    - #### AuthenticatingSMTPClient

          public AuthenticatingSMTPClient(boolean implicit,
                                          SSLContext ctx)

      Overloaded constructor that takes the implicit argument, and using `SMTPSClient.DEFAULT_PROTOCOL` i.e. TLS
      Parameters:
        `implicit` - The security mode, `true` for implicit, `false` for explicit
        `ctx` - A pre-configured SSL Context.

    - #### AuthenticatingSMTPClient

          public AuthenticatingSMTPClient(String protocol)

      Overloaded constructor that takes a protocol specification
      Parameters:
        `protocol` - The protocol to use

    - #### AuthenticatingSMTPClient

          public AuthenticatingSMTPClient(String proto,
                                          boolean implicit)

      Overloaded constructor that takes a protocol specification and the implicit argument
      Parameters:
        `proto` - the protocol.
        `implicit` - The security mode, `true` for implicit, `false` for explicit

    - #### AuthenticatingSMTPClient

          public AuthenticatingSMTPClient(String proto,
                                          boolean implicit,
                                          String encoding)

      Overloaded constructor that takes the protocol specification, the implicit argument and encoding
      Parameters:
        `proto` - the protocol.
        `implicit` - The security mode, `true` for implicit, `false` for explicit
        `encoding` - the encoding

    - #### AuthenticatingSMTPClient

          public AuthenticatingSMTPClient(String protocol,
                                          String encoding)

      Overloaded constructor that takes a protocol specification and encoding
      Parameters:
        `protocol` - The protocol to use
        `encoding` - The encoding to use

  - ### Method Detail

    - #### auth

          public boolean auth(AuthenticatingSMTPClient.AUTH_METHOD method,
                              String user,
                              String password)
                       throws IOException,
                              NoSuchAlgorithmException,
                              InvalidKeyException

      Authenticate to the SMTP server by sending the AUTH command with the selected mechanism, using the given user and the given password.
      Parameters:
        `method` - the method to use, one of the `AuthenticatingSMTPClient.AUTH_METHOD` enum values
        `user` - the user name. If the method is XOAUTH/XOAUTH2, then this is used as the plain text oauth protocol parameter string which is Base64-encoded for transmission.
        `password` - the password for the username. Ignored for XOAUTH/XOAUTH2.
      Returns:
        True if successfully completed, false if not.
      Throws:
        `SMTPConnectionClosedException` - If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.
        `IOException` - If an I/O error occurs while either sending a command to the server or receiving a reply from the server.
        `NoSuchAlgorithmException` - If the CRAM hash algorithm cannot be instantiated by the Java runtime system.
        `InvalidKeyException` - If the CRAM hash algorithm failed to use the given password.

    - #### ehlo

          public int ehlo(String hostname)
                   throws IOException

      A convenience method to send the ESMTP EHLO command to the server, receive the reply, and return the reply code.
      Parameters:
        `hostname` - The hostname of the sender.
      Returns:
        The reply code received from the server.
      Throws:
        `SMTPConnectionClosedException` - If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.
        `IOException` - If an I/O error occurs while either sending the command or receiving the server reply.

    - #### elogin

          public boolean elogin()
                         throws IOException

      Login to the ESMTP server by sending the EHLO command with the client hostname as an argument. Before performing any mail commands, you must first login.
      Returns:
        True if successfully completed, false if not.
      Throws:
        `SMTPConnectionClosedException` - If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.
        `IOException` - If an I/O error occurs while either sending a command to the server or receiving a reply from the server.

    - #### elogin

          public boolean elogin(String hostname)
                         throws IOException

      Login to the ESMTP server by sending the EHLO command with the given hostname as an argument. Before performing any mail commands, you must first login.
      Parameters:
        `hostname` - The hostname with which to greet the SMTP server.
      Returns:
        True if successfully completed, false if not.
      Throws:
        `SMTPConnectionClosedException` - If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.
        `IOException` - If an I/O error occurs while either sending a command to the server or receiving a reply from the server.

    - #### getEnhancedReplyCode

          public int[] getEnhancedReplyCode()

      Gets the integer values of the enhanced reply code of the last SMTP reply.
      Returns:
        The integer values of the enhanced reply code of the last SMTP reply. First digit is in the first array element.