Class 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 Detail

      • DEFAULT_LOGIN

        public static final LoginOption DEFAULT_LOGIN
      • DEFAULT_ALLOW_RCPT_ERRORS

        public static final boolean DEFAULT_ALLOW_RCPT_ERRORS
        See Also:
        Constant Field Values
      • DEFAULT_DISABLE_ESMTP

        public static final boolean DEFAULT_DISABLE_ESMTP
        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
      • DEFAULT_MAILS_PER_CONNECTION

        public static final long DEFAULT_MAILS_PER_CONNECTION
        See Also:
        Constant Field Values
      • DEFAULT_POOL_CLEANER_PERIOD

        public static final int DEFAULT_POOL_CLEANER_PERIOD
        Default pool cleaner period = 1000 ms (1 second)
        See Also:
        Constant Field Values
      • DEFAULT_POOL_CLEANER_PERIOD_TIMEOUT_UNIT

        public static final TimeUnit DEFAULT_POOL_CLEANER_PERIOD_TIMEOUT_UNIT
      • DEFAULT_KEEP_ALIVE_TIMEOUT

        public static final int DEFAULT_KEEP_ALIVE_TIMEOUT
        The default keep alive timeout for SMTP connection = 5 minutes
        See Also:
        Constant Field Values
      • DEFAULT_KEEP_ALIVE_TIMEOUT_UNIT

        public static final TimeUnit DEFAULT_KEEP_ALIVE_TIMEOUT_UNIT
    • 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

      • 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, NONE, REQUIRED or XOAUTH2

        Parameters:
        login - (default see DEFAULT_LOGIN)
        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
      • 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
      • getPoolCleanerPeriod

        public int getPoolCleanerPeriod()
        Returns:
        the connection pool cleaner period in ms.
      • setPoolCleanerPeriod

        public MailConfig setPoolCleanerPeriod​(int poolCleanerPeriod)
        Set the connection pool cleaner period, defaults in milli seconds, a non positive value disables expiration checks and connections will remain in the pool until they are closed.
        Parameters:
        poolCleanerPeriod - the pool cleaner period
        Returns:
        a reference to this, so the API can be used fluently
      • getKeepAliveTimeout

        public int getKeepAliveTimeout()
        Returns:
        the keep alive timeout value in seconds for SMTP connections
      • setKeepAliveTimeout

        public MailConfig setKeepAliveTimeout​(int keepAliveTimeout)
        Set the keep alive timeout for SMTP connection, Defaults in seconds.

        This value determines how long a connection remains unused in the pool before being evicted and closed.

        A timeout of 0 means there is no timeout.

        Parameters:
        keepAliveTimeout - the timeout, in seconds
        Returns:
        a reference to this, so the API can be used fluently
      • getPoolCleanerPeriodUnit

        public TimeUnit getPoolCleanerPeriodUnit()
        Gets the TimeUnit of pool cleaning period. Defaults to TimeUnit.MILLISECONDS
        Returns:
        the TimeUnit of the pool cleaning period.
      • setPoolCleanerPeriodUnit

        public MailConfig setPoolCleanerPeriodUnit​(TimeUnit poolCleanerPeriodUnit)
        Sets the TimeUnit of pool cleaning period.
        Parameters:
        poolCleanerPeriodUnit - the TimeUnit of the pool cleaning period.
        Returns:
        a reference to this, so the API can be used fluently
      • getKeepAliveTimeoutUnit

        public TimeUnit getKeepAliveTimeoutUnit()
        Gets the TimeUnit of keeping the connections alive timeout. Defaults to TimeUnit.SECONDS
        Returns:
        the TimeUnit of keeping the connections alive timeout
      • setKeepAliveTimeoutUnit

        public MailConfig setKeepAliveTimeoutUnit​(TimeUnit keepAliveTimeoutUnit)
        Sets TimeUnit of keeping connections in the pool alive.
        Parameters:
        keepAliveTimeoutUnit - the TimeUnit of keeping the connections alive timeout
        Returns:
        a reference to this, so the API can be used fluently
      • getNtDomain

        public String getNtDomain()
        Domain used on NTLM authentication.
        Returns:
        the domain name used on NTLM authentication
      • setNtDomain

        public MailConfig setNtDomain​(String ntDomain)
        Sets the domain used on NTLM authentication
        Parameters:
        ntDomain - the NTLM domain
        Returns:
        a reference to this, so the API can be used fluently
      • getWorkstation

        public String getWorkstation()
        Workstation used on NTLM authentication
        Returns:
        the workstation used on NTLM authentication
      • setWorkstation

        public MailConfig setWorkstation​(String workstation)
        Sets the workstation used on NTLM authentication
        Parameters:
        workstation - the workstation
        Returns:
        a reference to this, so the API can be used fluently
      • setMaxMailsPerConnection

        public MailConfig setMaxMailsPerConnection​(long maxMailsPerConnection)
        Sets the max emails count per connection before it gets closed.

        Some SMTP servers have requirement to allow only a number of emails sent per connection.

        Parameters:
        maxMailsPerConnection - the emails count per connection
        Returns:
        a reference to this, so the API can be used fluently
      • getMaxMailsPerConnection

        public long getMaxMailsPerConnection()
        The max emails count per connection.
        Returns:
        the max emails count per connection before it gets closed.
      • toJson

        public JsonObject toJson()
        convert config object to Json representation
        Overrides:
        toJson in class NetClientOptions
        Returns:
        json object of the config
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object