io.vertx.ext.mail

## Class MailConfig

- java.lang.Object
- - io.vertx.core.net.NetworkOptions
  - - io.vertx.core.net.TCPSSLOptions
    - - io.vertx.core.net.ClientOptionsBase
      - - io.vertx.core.net.NetClientOptions
        - - io.vertx.ext.mail.MailConfig

-     public class MailConfig
      extends NetClientOptions

  represents the configuration of a mail service with mail server hostname, port, security options, login options and login/password
  Author:
    Alexander Lehmann

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static boolean` | `DEFAULT_ALLOW_RCPT_ERRORS`
    `static boolean` | `DEFAULT_DISABLE_ESMTP`
    `static boolean` | `DEFAULT_ENABLE_PIPELINING`
    `static String` | `DEFAULT_HOST`
    `static boolean` | `DEFAULT_KEEP_ALIVE`
    `static LoginOption` | `DEFAULT_LOGIN`
    `static int` | `DEFAULT_MAX_POOL_SIZE`
    `static boolean` | `DEFAULT_MULTI_PART_ONLY`
    `static int` | `DEFAULT_PORT`
    `static StartTLSOptions` | `DEFAULT_TLS`
    `static String` | `DEFAULT_USER_AGENT`

    - ### Fields inherited from class io.vertx.core.net.NetClientOptions

      `DEFAULT_HOSTNAME_VERIFICATION_ALGORITHM, DEFAULT_RECONNECT_ATTEMPTS, DEFAULT_RECONNECT_INTERVAL`

    - ### Fields inherited from class io.vertx.core.net.ClientOptionsBase

      `DEFAULT_CONNECT_TIMEOUT, DEFAULT_METRICS_NAME, DEFAULT_TRUST_ALL`

    - ### Fields inherited from class io.vertx.core.net.TCPSSLOptions

      `DEFAULT_ENABLED_SECURE_TRANSPORT_PROTOCOLS, DEFAULT_IDLE_TIMEOUT, DEFAULT_IDLE_TIMEOUT_TIME_UNIT, DEFAULT_SO_LINGER, DEFAULT_SSL, DEFAULT_SSL_ENGINE, DEFAULT_SSL_HANDSHAKE_TIMEOUT, DEFAULT_SSL_HANDSHAKE_TIMEOUT_TIME_UNIT, DEFAULT_TCP_CORK, DEFAULT_TCP_FAST_OPEN, DEFAULT_TCP_KEEP_ALIVE, DEFAULT_TCP_NO_DELAY, DEFAULT_TCP_QUICKACK, DEFAULT_USE_ALPN`

    - ### Fields inherited from class io.vertx.core.net.NetworkOptions

      `DEFAULT_LOG_ENABLED, DEFAULT_RECEIVE_BUFFER_SIZE, DEFAULT_REUSE_ADDRESS, DEFAULT_REUSE_PORT, DEFAULT_SEND_BUFFER_SIZE, DEFAULT_TRAFFIC_CLASS`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MailConfig()` construct a config object with default options
    `MailConfig(JsonObject config)` construct config object from Json representation
    `MailConfig(MailConfig other)` copy config object from another MailConfig object
    `MailConfig(String hostname)` construct a config object with hostname and default options
    `MailConfig(String hostname, int port)` construct a config object with hostname/port and default options
    `MailConfig(String hostname, int port, StartTLSOptions starttls, LoginOption login)` construct a config object with hostname/port and security and login options

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `MailConfig` | `addCrlPath(String crlPath)` Add a CRL path
    `MailConfig` | `addCrlValue(Buffer crlValue)` Add a CRL value
    `MailConfig` | `addDKIMSignOption(DKIMSignOptions dkimSignOptions)` Adds a DKIMSignOptions.
    `MailConfig` | `addEnabledCipherSuite(String suite)` Add an enabled cipher suite, appended to the ordered suites.
    `MailConfig` | `addEnabledSecureTransportProtocol(String protocol)` Add an enabled SSL/TLS protocols, appended to the ordered protocols.
    `boolean` | `equals(Object o)`
    `String` | `getAuthMethods()` get string of allowed auth methods, if set only these methods will be used if the server supports them.
    `DKIMSignOptions` | `getDKIMSignOption()` Gets the DKIM options.
    `List<DKIMSignOptions>` | `getDKIMSignOptions()` Gets the DKIM options.
    `String` | `getHostname()` get the hostname of the mailserver
    `String` | `getKeyStore()` Deprecated. use `TCPSSLOptions.getTrustStoreOptions()`
    `String` | `getKeyStorePassword()` Deprecated. use `TCPSSLOptions.getTrustStoreOptions()`
    `LoginOption` | `getLogin()` get login options
    `int` | `getMaxPoolSize()` get the max allowed number of open connections to the mailserver if not set the default is 10
    `String` | `getOwnHostname()` get the hostname to be used for HELO/EHLO and the Message-ID
    `String` | `getPassword()` get password
    `int` | `getPort()` get the port of the mailserver
    `StartTLSOptions` | `getStarttls()` get security (TLS) options
    `String` | `getUserAgent()` Gets the Mail User Agent(MUA) name that will be used to generate boundary and message id.
    `String` | `getUsername()` get username
    `int` | `hashCode()`
    `boolean` | `isAllowRcptErrors()` get if sending allows rcpt errors (default is false)
    `boolean` | `isDisableEsmtp()` get if ESMTP should be tried as first command (EHLO) (default is true)
    `boolean` | `isEnableDKIM()` Is DKIM enabled, defaults to false.
    `boolean` | `isKeepAlive()` get if connection pool is enabled default is true
    `boolean` | `isMultiPartOnly()` Should the mail message be always encoded as multipart.
    `boolean` | `isPipelining()` Is the pipelining will be used if SMTP server supports it.
    `MailConfig` | `removeEnabledSecureTransportProtocol(String protocol)` Removes an enabled SSL/TLS protocol from the ordered protocols.
    `MailConfig` | `setAllowRcptErrors(boolean allowRcptErrors)` set if sending allows rcpt errors
    `MailConfig` | `setAuthMethods(String authMethods)` set string of allowed auth methods.
    `MailConfig` | `setConnectTimeout(int connectTimeout)` Set the connect timeout
    `MailConfig` | `setDisableEsmtp(boolean disableEsmtp)` set if ESMTP should be tried as first command (EHLO)
    `MailConfig` | `setDKIMSignOption(DKIMSignOptions dkimSignOptions)` Sets one DKIMSignOptions for convenient.
    `MailConfig` | `setDKIMSignOptions(List<DKIMSignOptions> dkimSignOptions)` Sets DKIMSignOptions.
    `MailConfig` | `setEnableDKIM(boolean enableDKIM)` Sets true to enable DKIM Signatures, sets false to disable it.
    `MailConfig` | `setEnabledSecureTransportProtocols(Set<String> enabledSecureTransportProtocols)` Sets the list of enabled SSL/TLS protocols.
    `MailConfig` | `setHostname(String hostname)` Set the hostname of the smtp server.
    `MailConfig` | `setHostnameVerificationAlgorithm(String hostnameVerificationAlgorithm)` Set the hostname verification algorithm interval To disable hostname verification, set hostnameVerificationAlgorithm to an empty String
    `MailConfig` | `setIdleTimeout(int idleTimeout)` Set the idle timeout, default time unit is seconds.
    `MailConfig` | `setIdleTimeoutUnit(TimeUnit idleTimeoutUnit)` Set the idle timeout unit.
    `MailConfig` | `setJdkSslEngineOptions(JdkSSLEngineOptions sslEngineOptions)`
    `MailConfig` | `setKeepAlive(boolean keepAlive)` set if connection pool is enabled default is true
    `MailConfig` | `setKeyCertOptions(KeyCertOptions options)` Set the key/cert options.
    `MailConfig` | `setKeyStore(String keyStore)` Deprecated. use `TCPSSLOptions.getTrustStoreOptions()`
    `MailConfig` | `setKeyStoreOptions(JksOptions options)` Set the key/cert options in jks format, aka Java keystore.
    `MailConfig` | `setKeyStorePassword(String keyStorePassword)` Deprecated. use `TCPSSLOptions.getTrustStoreOptions()`
    `MailConfig` | `setLocalAddress(String localAddress)` Set the local interface to bind for network connections.
    `MailConfig` | `setLogActivity(boolean logEnabled)` Set to true to enabled network activity logging: Netty's pipeline is configured for logging on Netty's logger.
    `MailConfig` | `setLogin(LoginOption login)` Set the login mode for the connection.
    `MailConfig` | `setMaxPoolSize(int maxPoolSize)` set the max allowed number of open connections to the mail server if not set the default is 10
    `MailConfig` | `setMetricsName(String metricsName)` Set the metrics name identifying the reported metrics, useful for grouping metrics with the same name.
    `MailConfig` | `setMultiPartOnly(boolean multiPartOnly)` Sets to encode multipart only or not.
    `MailConfig` | `setOpenSslEngineOptions(OpenSSLEngineOptions sslEngineOptions)`
    `MailConfig` | `setOwnHostname(String ownHostname)` set the hostname to be used for HELO/EHLO and the Message-ID
    `MailConfig` | `setPassword(String password)` Set the password for the login.
    `MailConfig` | `setPemKeyCertOptions(PemKeyCertOptions options)` Set the key/cert store options in pem format.
    `MailConfig` | `setPemTrustOptions(PemTrustOptions options)` Set the trust options in pem format
    `MailConfig` | `setPfxKeyCertOptions(PfxOptions options)` Set the key/cert options in pfx format.
    `MailConfig` | `setPfxTrustOptions(PfxOptions options)` Set the trust options in pfx format
    `MailConfig` | `setPipelining(boolean pipelining)` Sets to enable/disable the pipelining capability if SMTP server supports it.
    `MailConfig` | `setPort(int port)` Set the port of the smtp server.
    `MailConfig` | `setProxyOptions(ProxyOptions proxyOptions)` Set proxy options for connections via CONNECT proxy (e.g.
    `MailConfig` | `setReceiveBufferSize(int receiveBufferSize)` Set the TCP receive buffer size
    `MailConfig` | `setReconnectAttempts(int attempts)` Set the value of reconnect attempts
    `MailConfig` | `setReconnectInterval(long interval)` Set the reconnect interval
    `MailConfig` | `setReuseAddress(boolean reuseAddress)` Set the value of reuse address
    `MailConfig` | `setReusePort(boolean reusePort)` Set the value of reuse port.
    `MailConfig` | `setSendBufferSize(int sendBufferSize)` Set the TCP send buffer size
    `MailConfig` | `setSoLinger(int soLinger)` Set whether SO_linger keep alive is enabled
    `MailConfig` | `setSsl(boolean isSsl)` Set whether SSL/TLS is enabled
    `MailConfig` | `setSslEngineOptions(SSLEngineOptions sslEngineOptions)` Set to use SSL engine implementation to use.
    `MailConfig` | `setSslHandshakeTimeout(long sslHandshakeTimeout)` Set the SSL handshake timeout, default time unit is seconds.
    `MailConfig` | `setSslHandshakeTimeoutUnit(TimeUnit sslHandshakeTimeoutUnit)` Set the SSL handshake timeout unit.
    `MailConfig` | `setStarttls(StartTLSOptions starttls)` Set the tls security mode for the connection.
    `MailConfig` | `setTcpCork(boolean tcpCork)` Enable the `TCP_CORK` option - only with linux native transport.
    `MailConfig` | `setTcpFastOpen(boolean tcpFastOpen)` Enable the `TCP_FASTOPEN` option - only with linux native transport.
    `MailConfig` | `setTcpKeepAlive(boolean tcpKeepAlive)` Set whether TCP keep alive is enabled
    `MailConfig` | `setTcpNoDelay(boolean tcpNoDelay)` Set whether TCP no delay is enabled
    `MailConfig` | `setTcpQuickAck(boolean tcpQuickAck)` Enable the `TCP_QUICKACK` option - only with linux native transport.
    `MailConfig` | `setTrafficClass(int trafficClass)` Set the value of traffic class
    `MailConfig` | `setTrustAll(boolean trustAll)` Set whether all server certificates should be trusted
    `MailConfig` | `setTrustOptions(TrustOptions options)` Set the trust options.
    `MailConfig` | `setTrustStoreOptions(JksOptions options)` Set the trust options in jks format, aka Java truststore
    `MailConfig` | `setUseAlpn(boolean useAlpn)` Set the ALPN usage.
    `MailConfig` | `setUserAgent(String userAgent)` Sets the Mail User Agent(MUA) name.
    `MailConfig` | `setUsername(String username)` Set the username for the login.
    `JsonObject` | `toJson()` convert config object to Json representation

    - ### Methods inherited from class io.vertx.core.net.NetClientOptions

      `getApplicationLayerProtocols, getHostnameVerificationAlgorithm, getReconnectAttempts, getReconnectInterval, setApplicationLayerProtocols`

    - ### Methods inherited from class io.vertx.core.net.ClientOptionsBase

      `getConnectTimeout, getLocalAddress, getMetricsName, getProxyOptions, isTrustAll`

    - ### Methods inherited from class io.vertx.core.net.TCPSSLOptions

      `getCrlPaths, getCrlValues, getEnabledCipherSuites, getEnabledSecureTransportProtocols, getIdleTimeout, getIdleTimeoutUnit, getJdkSslEngineOptions, getKeyCertOptions, getKeyStoreOptions, getOpenSslEngineOptions, getPemKeyCertOptions, getPemTrustOptions, getPfxKeyCertOptions, getPfxTrustOptions, getSoLinger, getSslEngineOptions, getSslHandshakeTimeout, getSslHandshakeTimeoutUnit, getTrustOptions, getTrustStoreOptions, isSsl, isTcpCork, isTcpFastOpen, isTcpKeepAlive, isTcpNoDelay, isTcpQuickAck, isUseAlpn`

    - ### Methods inherited from class io.vertx.core.net.NetworkOptions

      `getLogActivity, getReceiveBufferSize, getSendBufferSize, getTrafficClass, isReuseAddress, isReusePort`

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

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

- - ### Field Detail

    - #### DEFAULT_LOGIN

          public static final LoginOption DEFAULT_LOGIN

    - #### DEFAULT_TLS

          public static final StartTLSOptions DEFAULT_TLS

    - #### DEFAULT_PORT

          public static final int DEFAULT_PORT

      See Also:
        Constant Field Values

    - #### DEFAULT_HOST

          public static final String DEFAULT_HOST

      See Also:
        Constant Field Values

    - #### DEFAULT_MAX_POOL_SIZE

          public static final int DEFAULT_MAX_POOL_SIZE

      See Also:
        Constant Field Values

    - #### DEFAULT_ALLOW_RCPT_ERRORS

          public static final boolean DEFAULT_ALLOW_RCPT_ERRORS

      See Also:
        Constant Field Values

    - #### DEFAULT_KEEP_ALIVE

          public static final boolean DEFAULT_KEEP_ALIVE

      See Also:
        Constant Field Values

    - #### DEFAULT_DISABLE_ESMTP

          public static final boolean DEFAULT_DISABLE_ESMTP

      See Also:
        Constant Field Values

    - #### DEFAULT_USER_AGENT

          public static final String DEFAULT_USER_AGENT

      See Also:
        Constant Field Values

    - #### DEFAULT_ENABLE_PIPELINING

          public static final boolean DEFAULT_ENABLE_PIPELINING

      See Also:
        Constant Field Values

    - #### DEFAULT_MULTI_PART_ONLY

          public static final boolean DEFAULT_MULTI_PART_ONLY

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### MailConfig

          public MailConfig()

      construct a config object with default options

    - #### MailConfig

          public MailConfig(String hostname)

      construct a config object with hostname and default options
      Parameters:
        `hostname` - the hostname of the mail server

    - #### MailConfig

          public MailConfig(String hostname,
                            int port)

      construct a config object with hostname/port and default options
      Parameters:
        `hostname` - the hostname of the mail server
        `port` - the port of the mail server

    - #### MailConfig

          public MailConfig(String hostname,
                            int port,
                            StartTLSOptions starttls,
                            LoginOption login)

      construct a config object with hostname/port and security and login options
      Parameters:
        `hostname` - the hostname of the mail server
        `port` - the port of the mail server
        `starttls` - whether to use TLS or not
        `login` - whether to use Login or not

    - #### MailConfig

          public MailConfig(MailConfig other)

      copy config object from another MailConfig object
      Parameters:
        `other` - the object to be copied

    - #### MailConfig

          public MailConfig(JsonObject config)

      construct config object from Json representation
      Parameters:
        `config` - the config to copy

  - ### Method Detail

    - #### setSendBufferSize

          public MailConfig setSendBufferSize(int sendBufferSize)

      Description copied from class: `NetworkOptions`
      Set the TCP send buffer size
      Overrides:
        `setSendBufferSize` in class `NetClientOptions`
      Parameters:
        `sendBufferSize` - the buffers size, in bytes
      Returns:
        a reference to this, so the API can be used fluently

    - #### setReceiveBufferSize

          public MailConfig setReceiveBufferSize(int receiveBufferSize)

      Description copied from class: `NetworkOptions`
      Set the TCP receive buffer size
      Overrides:
        `setReceiveBufferSize` in class `NetClientOptions`
      Parameters:
        `receiveBufferSize` - the buffers size, in bytes
      Returns:
        a reference to this, so the API can be used fluently

    - #### setReuseAddress

          public MailConfig setReuseAddress(boolean reuseAddress)

      Description copied from class: `NetworkOptions`
      Set the value of reuse address
      Overrides:
        `setReuseAddress` in class `NetClientOptions`
      Parameters:
        `reuseAddress` - the value of reuse address
      Returns:
        a reference to this, so the API can be used fluently

    - #### setReusePort

          public MailConfig setReusePort(boolean reusePort)

      Description copied from class: `NetworkOptions`
      Set the value of reuse port.

      This is only supported by native transports.
      Overrides:
        `setReusePort` in class `NetClientOptions`
      Parameters:
        `reusePort` - the value of reuse port
      Returns:
        a reference to this, so the API can be used fluently

    - #### setTrafficClass

          public MailConfig setTrafficClass(int trafficClass)

      Description copied from class: `NetworkOptions`
      Set the value of traffic class
      Overrides:
        `setTrafficClass` in class `NetClientOptions`
      Parameters:
        `trafficClass` - the value of traffic class
      Returns:
        a reference to this, so the API can be used fluently

    - #### setTcpNoDelay

          public MailConfig setTcpNoDelay(boolean tcpNoDelay)

      Description copied from class: `TCPSSLOptions`
      Set whether TCP no delay is enabled
      Overrides:
        `setTcpNoDelay` in class `NetClientOptions`
      Parameters:
        `tcpNoDelay` - true if TCP no delay is enabled (Nagle disabled)
      Returns:
        a reference to this, so the API can be used fluently

    - #### setTcpKeepAlive

          public MailConfig setTcpKeepAlive(boolean tcpKeepAlive)

      Description copied from class: `TCPSSLOptions`
      Set whether TCP keep alive is enabled
      Overrides:
        `setTcpKeepAlive` in class `NetClientOptions`
      Parameters:
        `tcpKeepAlive` - true if TCP keep alive is enabled
      Returns:
        a reference to this, so the API can be used fluently

    - #### setSoLinger

          public MailConfig setSoLinger(int soLinger)

      Description copied from class: `TCPSSLOptions`
      Set whether SO_linger keep alive is enabled
      Overrides:
        `setSoLinger` in class `NetClientOptions`
      Parameters:
        `soLinger` - true if SO_linger is enabled
      Returns:
        a reference to this, so the API can be used fluently

    - #### setIdleTimeout

          public MailConfig setIdleTimeout(int idleTimeout)

      Description copied from class: `TCPSSLOptions`
      Set the idle timeout, default time unit is seconds. Zero means don't timeout. This determines if a connection will timeout and be closed if no data is received within the timeout. If you want change default time unit, use `TCPSSLOptions.setIdleTimeoutUnit(TimeUnit)`
      Overrides:
        `setIdleTimeout` in class `NetClientOptions`
      Parameters:
        `idleTimeout` - the timeout, in seconds
      Returns:
        a reference to this, so the API can be used fluently

    - #### setIdleTimeoutUnit

          public MailConfig setIdleTimeoutUnit(TimeUnit idleTimeoutUnit)

      Description copied from class: `TCPSSLOptions`
      Set the idle timeout unit. If not specified, default is seconds.
      Overrides:
        `setIdleTimeoutUnit` in class `NetClientOptions`
      Parameters:
        `idleTimeoutUnit` - specify time unit.
      Returns:
        a reference to this, so the API can be used fluently

    - #### setKeyCertOptions

          public MailConfig setKeyCertOptions(KeyCertOptions options)

      Description copied from class: `TCPSSLOptions`
      Set the key/cert options.
      Overrides:
        `setKeyCertOptions` in class `NetClientOptions`
      Parameters:
        `options` - the key store options
      Returns:
        a reference to this, so the API can be used fluently

    - #### setKeyStoreOptions

          public MailConfig setKeyStoreOptions(JksOptions options)

      Description copied from class: `TCPSSLOptions`
      Set the key/cert options in jks format, aka Java keystore.
      Overrides:
        `setKeyStoreOptions` in class `NetClientOptions`
      Parameters:
        `options` - the key store in jks format
      Returns:
        a reference to this, so the API can be used fluently

    - #### setPfxKeyCertOptions

          public MailConfig setPfxKeyCertOptions(PfxOptions options)

      Description copied from class: `TCPSSLOptions`
      Set the key/cert options in pfx format.
      Overrides:
        `setPfxKeyCertOptions` in class `NetClientOptions`
      Parameters:
        `options` - the key cert options in pfx format
      Returns:
        a reference to this, so the API can be used fluently

    - #### setPemKeyCertOptions

          public MailConfig setPemKeyCertOptions(PemKeyCertOptions options)

      Description copied from class: `TCPSSLOptions`
      Set the key/cert store options in pem format.
      Overrides:
        `setPemKeyCertOptions` in class `NetClientOptions`
      Parameters:
        `options` - the options in pem format
      Returns:
        a reference to this, so the API can be used fluently

    - #### setTrustOptions

          public MailConfig setTrustOptions(TrustOptions options)

      Description copied from class: `TCPSSLOptions`
      Set the trust options.
      Overrides:
        `setTrustOptions` in class `NetClientOptions`
      Parameters:
        `options` - the trust options
      Returns:
        a reference to this, so the API can be used fluently

    - #### setTrustStoreOptions

          public MailConfig setTrustStoreOptions(JksOptions options)

      Description copied from class: `TCPSSLOptions`
      Set the trust options in jks format, aka Java truststore
      Overrides:
        `setTrustStoreOptions` in class `NetClientOptions`
      Parameters:
        `options` - the trust options in jks format
      Returns:
        a reference to this, so the API can be used fluently

    - #### setPemTrustOptions

          public MailConfig setPemTrustOptions(PemTrustOptions options)

      Description copied from class: `TCPSSLOptions`
      Set the trust options in pem format
      Overrides:
        `setPemTrustOptions` in class `NetClientOptions`
      Parameters:
        `options` - the trust options in pem format
      Returns:
        a reference to this, so the API can be used fluently

    - #### setPfxTrustOptions

          public MailConfig setPfxTrustOptions(PfxOptions options)

      Description copied from class: `TCPSSLOptions`
      Set the trust options in pfx format
      Overrides:
        `setPfxTrustOptions` in class `NetClientOptions`
      Parameters:
        `options` - the trust options in pfx format
      Returns:
        a reference to this, so the API can be used fluently

    - #### addEnabledCipherSuite

          public MailConfig addEnabledCipherSuite(String suite)

      Description copied from class: `TCPSSLOptions`
      Add an enabled cipher suite, appended to the ordered suites.
      Overrides:
        `addEnabledCipherSuite` in class `NetClientOptions`
      Parameters:
        `suite` - the suite
      Returns:
        a reference to this, so the API can be used fluently

    - #### addEnabledSecureTransportProtocol

          public MailConfig addEnabledSecureTransportProtocol(String protocol)

      Description copied from class: `TCPSSLOptions`
      Add an enabled SSL/TLS protocols, appended to the ordered protocols.
      Overrides:
        `addEnabledSecureTransportProtocol` in class `NetClientOptions`
      Parameters:
        `protocol` - the SSL/TLS protocol to enable
      Returns:
        a reference to this, so the API can be used fluently

    - #### removeEnabledSecureTransportProtocol

          public MailConfig removeEnabledSecureTransportProtocol(String protocol)

      Description copied from class: `TCPSSLOptions`
      Removes an enabled SSL/TLS protocol from the ordered protocols.
      Overrides:
        `removeEnabledSecureTransportProtocol` in class `NetClientOptions`
      Parameters:
        `protocol` - the SSL/TLS protocol to disable
      Returns:
        a reference to this, so the API can be used fluently

    - #### setUseAlpn

          public MailConfig setUseAlpn(boolean useAlpn)

      Description copied from class: `TCPSSLOptions`
      Set the ALPN usage.
      Overrides:
        `setUseAlpn` in class `NetClientOptions`
      Parameters:
        `useAlpn` - true when Application-Layer Protocol Negotiation should be used

    - #### setSslEngineOptions

          public MailConfig setSslEngineOptions(SSLEngineOptions sslEngineOptions)

      Description copied from class: `TCPSSLOptions`
      Set to use SSL engine implementation to use.
      Overrides:
        `setSslEngineOptions` in class `NetClientOptions`
      Parameters:
        `sslEngineOptions` - the ssl engine to use
      Returns:
        a reference to this, so the API can be used fluently

    - #### setJdkSslEngineOptions

          public MailConfig setJdkSslEngineOptions(JdkSSLEngineOptions sslEngineOptions)

      Overrides:
        `setJdkSslEngineOptions` in class `NetClientOptions`

    - #### setTcpFastOpen

          public MailConfig setTcpFastOpen(boolean tcpFastOpen)

      Description copied from class: `TCPSSLOptions`
      Enable the `TCP_FASTOPEN` option - only with linux native transport.
      Overrides:
        `setTcpFastOpen` in class `NetClientOptions`
      Parameters:
        `tcpFastOpen` - the fast open value

    - #### setTcpCork

          public MailConfig setTcpCork(boolean tcpCork)

      Description copied from class: `TCPSSLOptions`
      Enable the `TCP_CORK` option - only with linux native transport.
      Overrides:
        `setTcpCork` in class `NetClientOptions`
      Parameters:
        `tcpCork` - the cork value

    - #### setTcpQuickAck

          public MailConfig setTcpQuickAck(boolean tcpQuickAck)

      Description copied from class: `TCPSSLOptions`
      Enable the `TCP_QUICKACK` option - only with linux native transport.
      Overrides:
        `setTcpQuickAck` in class `NetClientOptions`
      Parameters:
        `tcpQuickAck` - the quick ack value

    - #### setOpenSslEngineOptions

          public MailConfig setOpenSslEngineOptions(OpenSSLEngineOptions sslEngineOptions)

      Overrides:
        `setOpenSslEngineOptions` in class `NetClientOptions`

    - #### addCrlPath

          public MailConfig addCrlPath(String crlPath)
                                throws NullPointerException

      Description copied from class: `TCPSSLOptions`
      Add a CRL path
      Overrides:
        `addCrlPath` in class `NetClientOptions`
      Parameters:
        `crlPath` - the path
      Returns:
        a reference to this, so the API can be used fluently
      Throws:
        `NullPointerException`

    - #### addCrlValue

          public MailConfig addCrlValue(Buffer crlValue)
                                 throws NullPointerException

      Description copied from class: `TCPSSLOptions`
      Add a CRL value
      Overrides:
        `addCrlValue` in class `NetClientOptions`
      Parameters:
        `crlValue` - the value
      Returns:
        a reference to this, so the API can be used fluently
      Throws:
        `NullPointerException`

    - #### setConnectTimeout

          public MailConfig setConnectTimeout(int connectTimeout)

      Description copied from class: `ClientOptionsBase`
      Set the connect timeout
      Overrides:
        `setConnectTimeout` in class `NetClientOptions`
      Parameters:
        `connectTimeout` - connect timeout, in ms
      Returns:
        a reference to this, so the API can be used fluently

    - #### setMetricsName

          public MailConfig setMetricsName(String metricsName)

      Description copied from class: `ClientOptionsBase`
      Set the metrics name identifying the reported metrics, useful for grouping metrics with the same name.
      Overrides:
        `setMetricsName` in class `NetClientOptions`
      Parameters:
        `metricsName` - the metrics name
      Returns:
        a reference to this, so the API can be used fluently

    - #### setReconnectAttempts

          public MailConfig setReconnectAttempts(int attempts)

      Description copied from class: `NetClientOptions`
      Set the value of reconnect attempts
      Overrides:
        `setReconnectAttempts` in class `NetClientOptions`
      Parameters:
        `attempts` - the maximum number of reconnect attempts
      Returns:
        a reference to this, so the API can be used fluently

    - #### setReconnectInterval

          public MailConfig setReconnectInterval(long interval)

      Description copied from class: `NetClientOptions`
      Set the reconnect interval
      Overrides:
        `setReconnectInterval` in class `NetClientOptions`
      Parameters:
        `interval` - the reconnect interval in ms
      Returns:
        a reference to this, so the API can be used fluently

    - #### setHostnameVerificationAlgorithm

          public MailConfig setHostnameVerificationAlgorithm(String hostnameVerificationAlgorithm)

      Description copied from class: `NetClientOptions`
      Set the hostname verification algorithm interval To disable hostname verification, set hostnameVerificationAlgorithm to an empty String
      Overrides:
        `setHostnameVerificationAlgorithm` in class `NetClientOptions`
      Parameters:
        `hostnameVerificationAlgorithm` - should be HTTPS, LDAPS or an empty String
      Returns:
        a reference to this, so the API can be used fluently

    - #### setLogActivity

          public MailConfig setLogActivity(boolean logEnabled)

      Description copied from class: `NetworkOptions`
      Set to true to enabled network activity logging: Netty's pipeline is configured for logging on Netty's logger.
      Overrides:
        `setLogActivity` in class `NetClientOptions`
      Parameters:
        `logEnabled` - true for logging the network activity
      Returns:
        a reference to this, so the API can be used fluently

    - #### setProxyOptions

          public MailConfig setProxyOptions(ProxyOptions proxyOptions)

      Description copied from class: `ClientOptionsBase`
      Set proxy options for connections via CONNECT proxy (e.g. Squid) or a SOCKS proxy.
      Overrides:
        `setProxyOptions` in class `NetClientOptions`
      Parameters:
        `proxyOptions` - proxy options object
      Returns:
        a reference to this, so the API can be used fluently

    - #### setLocalAddress

          public MailConfig setLocalAddress(String localAddress)

      Description copied from class: `ClientOptionsBase`
      Set the local interface to bind for network connections. When the local address is null, it will pick any local address, the default local address is null.
      Overrides:
        `setLocalAddress` in class `NetClientOptions`
      Parameters:
        `localAddress` - the local address
      Returns:
        a reference to this, so the API can be used fluently

    - #### setSslHandshakeTimeout

          public MailConfig setSslHandshakeTimeout(long sslHandshakeTimeout)

      Description copied from class: `TCPSSLOptions`
      Set the SSL handshake timeout, default time unit is seconds.
      Overrides:
        `setSslHandshakeTimeout` in class `NetClientOptions`
      Parameters:
        `sslHandshakeTimeout` - the SSL handshake timeout to set, in milliseconds
      Returns:
        a reference to this, so the API can be used fluently

    - #### setSslHandshakeTimeoutUnit

          public MailConfig setSslHandshakeTimeoutUnit(TimeUnit sslHandshakeTimeoutUnit)

      Description copied from class: `TCPSSLOptions`
      Set the SSL handshake timeout unit. If not specified, default is seconds.
      Overrides:
        `setSslHandshakeTimeoutUnit` in class `NetClientOptions`
      Parameters:
        `sslHandshakeTimeoutUnit` - specify time unit.
      Returns:
        a reference to this, so the API can be used fluently

    - #### getHostname

          public String getHostname()

      get the hostname of the mailserver
      Returns:
        hostname

    - #### setHostname

          public MailConfig setHostname(String hostname)

      Set the hostname of the smtp server.
      Parameters:
        `hostname` - the hostname (default is localhost)
      Returns:
        a reference to this, so the API can be used fluently

    - #### getPort

          public int getPort()

      get the port of the mailserver
      Returns:
        port

    - #### setPort

          public MailConfig setPort(int port)

      Set the port of the smtp server.
      Parameters:
        `port` - the port (default is 25)
      Returns:
        a reference to this, so the API can be used fluently

    - #### getStarttls

          public StartTLSOptions getStarttls()

      get security (TLS) options
      Returns:
        the security options

    - #### setStarttls

          public MailConfig setStarttls(StartTLSOptions starttls)

      Set the tls security mode for the connection.

      Either NONE, OPTIONAL or REQUIRED

      Parameters:
        `starttls` - (default is OPTIONAL)
      Returns:
        a reference to this, so the API can be used fluently

    - #### getLogin

          public LoginOption getLogin()

      get login options
      Returns:
        the login options

    - #### setLogin

          public MailConfig setLogin(LoginOption login)

      Set the login mode for the connection.

      Either DISABLED, OPTIONAL or REQUIRED

      Parameters:
        `login` - (default is OPTIONAL)
      Returns:
        a reference to this, so the API can be used fluently

    - #### getUsername

          public String getUsername()

      get username
      Returns:
        username

    - #### setUsername

          public MailConfig setUsername(String username)

      Set the username for the login.
      Parameters:
        `username` - the username
      Returns:
        a reference to this, so the API can be used fluently

    - #### getPassword

          public String getPassword()

      get password
      Returns:
        password

    - #### setPassword

          public MailConfig setPassword(String password)

      Set the password for the login.
      Parameters:
        `password` - the password
      Returns:
        a reference to this, so the API can be used fluently

    - #### setSsl

          public MailConfig setSsl(boolean isSsl)

      Description copied from class: `TCPSSLOptions`
      Set whether SSL/TLS is enabled
      Overrides:
        `setSsl` in class `NetClientOptions`
      Parameters:
        `isSsl` - true if enabled
      Returns:
        a reference to this, so the API can be used fluently

    - #### setEnabledSecureTransportProtocols

          public MailConfig setEnabledSecureTransportProtocols(Set<String> enabledSecureTransportProtocols)

      Description copied from class: `TCPSSLOptions`
      Sets the list of enabled SSL/TLS protocols.
      Overrides:
        `setEnabledSecureTransportProtocols` in class `NetClientOptions`
      Parameters:
        `enabledSecureTransportProtocols` - the SSL/TLS protocols to enable
      Returns:
        a reference to this, so the API can be used fluently

    - #### setTrustAll

          public MailConfig setTrustAll(boolean trustAll)

      Description copied from class: `ClientOptionsBase`
      Set whether all server certificates should be trusted
      Overrides:
        `setTrustAll` in class `NetClientOptions`
      Parameters:
        `trustAll` - true if all should be trusted
      Returns:
        a reference to this, so the API can be used fluently

    - #### getKeyStore

          @Deprecated
          public String getKeyStore()

      Deprecated. use `TCPSSLOptions.getTrustStoreOptions()`
      get the key store filename to be used when opening SMTP connections
      Returns:
        the keyStore

    - #### setKeyStore

          @Deprecated
          public MailConfig setKeyStore(String keyStore)

      Deprecated. use `TCPSSLOptions.getTrustStoreOptions()`
      get the key store filename to be used when opening SMTP connections

      if not set, an options object will be created based on other settings (ssl and trustAll)

      Parameters:
        `keyStore` - the key store filename to be set
      Returns:
        a reference to this, so the API can be used fluently

    - #### getKeyStorePassword

          @Deprecated
          public String getKeyStorePassword()

      Deprecated. use `TCPSSLOptions.getTrustStoreOptions()`
      get the key store password to be used when opening SMTP connections
      Returns:
        the keyStorePassword

    - #### setKeyStorePassword

          @Deprecated
          public MailConfig setKeyStorePassword(String keyStorePassword)

      Deprecated. use `TCPSSLOptions.getTrustStoreOptions()`
      get the key store password to be used when opening SMTP connections
      Parameters:
        `keyStorePassword` - the key store passwords to be set
      Returns:
        a reference to this, so the API can be used fluently

    - #### getAuthMethods

          public String getAuthMethods()

      get string of allowed auth methods, if set only these methods will be used if the server supports them. If null or empty all supported methods may be used
      Returns:
        the authMethods

    - #### setAuthMethods

          public MailConfig setAuthMethods(String authMethods)

      set string of allowed auth methods. if set only these methods will be used if the server supports them. If null or empty all supported methods may be used
      Parameters:
        `authMethods` - the authMethods to set
      Returns:
        a reference to this, so the API can be used fluently

    - #### getOwnHostname

          public String getOwnHostname()

      get the hostname to be used for HELO/EHLO and the Message-ID
      Returns:
        my own hostname

    - #### setOwnHostname

          public MailConfig setOwnHostname(String ownHostname)

      set the hostname to be used for HELO/EHLO and the Message-ID
      Parameters:
        `ownHostname` - my own hostname to set
      Returns:
        a reference to this, so the API can be used fluently

    - #### getMaxPoolSize

          public int getMaxPoolSize()

      get the max allowed number of open connections to the mailserver if not set the default is 10
      Returns:
        max pool size value

    - #### setMaxPoolSize

          public MailConfig setMaxPoolSize(int maxPoolSize)

      set the max allowed number of open connections to the mail server if not set the default is 10
      Returns:
        this to be able to use the object fluently

    - #### isKeepAlive

          public boolean isKeepAlive()

      get if connection pool is enabled default is true

      if the connection pooling is disabled, the max number of sockets is enforced nevertheless

      Returns:
        keep alive value

    - #### setKeepAlive

          public MailConfig setKeepAlive(boolean keepAlive)

      set if connection pool is enabled default is true

      if the connection pooling is disabled, the max number of sockets is enforced nevertheless

      Returns:
        this to be able to use the object fluently

    - #### isAllowRcptErrors

          public boolean isAllowRcptErrors()

      get if sending allows rcpt errors (default is false)

      if true, the mail will be sent to the recipients that the server accepted, if any

      Returns:
        the allowRcptErrors

    - #### setAllowRcptErrors

          public MailConfig setAllowRcptErrors(boolean allowRcptErrors)

      set if sending allows rcpt errors

      if true, the mail will be sent to the recipients that the server accepted, if any

      Parameters:
        `allowRcptErrors` - the allowRcptErrors to set (default is false)
      Returns:
        this to be able to use the object fluently

    - #### isDisableEsmtp

          public boolean isDisableEsmtp()

      get if ESMTP should be tried as first command (EHLO) (default is true)

      rfc 1869 states that clients should always attempt EHLO as first command to determine if ESMTP is supported, if this returns an error code, HELO is tried to use old SMTP. If there is a server that does not support EHLO and does not give an error code back, the connection should be closed and retried with HELO. We do not do that and rather support turning off ESMTP with a setting. The odds of this actually happening are very small since the client will not connect to arbitrary smtp hosts on the internet. Since the client knows that is connects to a host that doesn't support ESMTP/EHLO in that way, the property has to be set to false.

      Returns:
        the disableEsmtp

    - #### setDisableEsmtp

          public MailConfig setDisableEsmtp(boolean disableEsmtp)

      set if ESMTP should be tried as first command (EHLO)

      rfc 1869 states that clients should always attempt EHLO as first command to determine if ESMTP is supported, if this returns an error code, HELO is tried to use old SMTP. If there is a server that does not support EHLO and does not give an error code back, the connection should be closed and retried with HELO. We do not do that and rather support turning off ESMTP with a setting. The odds of this actually happening are very small since the client will not connect to arbitrary smtp hosts on the internet. Since the client knows that is connects to a host that doesn't support ESMTP/EHLO in that way, the property has to be set to false.

      Parameters:
        `disableEsmtp` - the disableEsmtp to set (default is true)
      Returns:
        this to be able to use the object fluently

    - #### getUserAgent

          public String getUserAgent()

      Gets the Mail User Agent(MUA) name that will be used to generate boundary and message id.
      Returns:
        the Mail User Agent(MUA) name used to generate boundary and message id

    - #### setUserAgent

          public MailConfig setUserAgent(String userAgent)

      Sets the Mail User Agent(MUA) name.

      It is used to generate the boundary in case of MultiPart email and the Message-ID. If `null` is set, DEFAULT_USER_AGENT is used.

      Parameters:
        `userAgent` - the Mail User Agent(MUA) name used to generate boundary and message id length of userAgent must be smaller than 40 so that the generated boundary has no longer 70 characters.
      Returns:
        this to be able to use the object fluently

    - #### isEnableDKIM

          public boolean isEnableDKIM()

      Is DKIM enabled, defaults to false.
      Returns:
        enableDKIM

    - #### setEnableDKIM

          public MailConfig setEnableDKIM(boolean enableDKIM)

      Sets true to enable DKIM Signatures, sets false to disable it.

      This is used most for temporary disable DKIM without removing DKIM opations from current config.

      Parameters:
        `enableDKIM` - if DKIM Singature should be enabled
      Returns:
        this to be able to use the object fluently

    - #### getDKIMSignOptions

          public List<DKIMSignOptions> getDKIMSignOptions()

      Gets the DKIM options.
      Returns:
        dkimSignOptions

    - #### addDKIMSignOption

          public MailConfig addDKIMSignOption(DKIMSignOptions dkimSignOptions)

      Adds a DKIMSignOptions.
      Parameters:
        `dkimSignOptions` - the DKIMSignOptions
      Returns:
        this to be able to use the object fluently

    - #### setDKIMSignOptions

          public MailConfig setDKIMSignOptions(List<DKIMSignOptions> dkimSignOptions)

      Sets DKIMSignOptions.
      Parameters:
        `dkimSignOptions` - the DKIM options
      Returns:
        this to be able to use the object fluently

    - #### setDKIMSignOption

          public MailConfig setDKIMSignOption(DKIMSignOptions dkimSignOptions)

      Sets one DKIMSignOptions for convenient.
      Parameters:
        `dkimSignOptions` - the DKIM options
      Returns:
        this to be able to use the object fluently

    - #### getDKIMSignOption

          public DKIMSignOptions getDKIMSignOption()

      Gets the DKIM options.
      Returns:
        dkimSignOptions of the first one or null if nothing specified yet.

    - #### isPipelining

          public boolean isPipelining()

      Is the pipelining will be used if SMTP server supports it. Default to true.
      Returns:
        if enable pipelining capability if SMTP server supports it.

    - #### setPipelining

          public MailConfig setPipelining(boolean pipelining)

      Sets to enable/disable the pipelining capability if SMTP server supports it.
      Parameters:
        `pipelining` - enable pipelining or not
      Returns:
        this to be able to use the object fluently

    - #### isMultiPartOnly

          public boolean isMultiPartOnly()

      Should the mail message be always encoded as multipart.
      Returns:
        if the mail message will be encoded as multipart only.

    - #### setMultiPartOnly

          public MailConfig setMultiPartOnly(boolean multiPartOnly)

      Sets to encode multipart only or not. When sets to `true`, the mail message will be encoded as multipart even for simple mails without attachments, see https://github.com/vert-x3/vertx-mail-client/issues/161.
      Parameters:
        `multiPartOnly` - encoded as multipart only or not, default to `false`.
      Returns:
        this to be able to use the object fluently

    - #### toJson

          public JsonObject toJson()

      convert config object to Json representation
      Overrides:
        `toJson` in class `ClientOptionsBase`
      Returns:
        json object of the config

    - #### equals

          public boolean equals(Object o)

      Overrides:
        `equals` in class `Object`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `Object`

Copyright © 2021 Eclipse. All rights reserved.