All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.quarkus.mailer.runtime.MailerRuntimeConfig Maven / Gradle / Ivy

There is a newer version: 3.17.5
Show newest version
package io.quarkus.mailer.runtime;

import java.time.Duration;
import java.util.List;
import java.util.Optional;
import java.util.OptionalInt;
import java.util.regex.Pattern;

import io.quarkus.runtime.annotations.ConfigGroup;
import io.quarkus.runtime.annotations.ConfigItem;
import io.quarkus.runtime.annotations.ConvertWith;

@ConfigGroup
public class MailerRuntimeConfig {

    /**
     * Sets the default `from` attribute when not specified in the {@link io.quarkus.mailer.Mail} instance.
     * It's the sender email address.
     */
    @ConfigItem
    public Optional from = Optional.empty();

    /**
     * Enables the mock mode.
     * When enabled, mails are not sent, but stored in an in-memory mailbox.
     * The content of the emails is also printed on the console.
     * 

* Disabled by default on PROD, enabled by default on DEV and TEST modes. */ @ConfigItem public Optional mock = Optional.empty(); /** * Sets the default bounce email address. * A bounced email, or bounce, is an email message that gets rejected by a mail server. */ @ConfigItem public Optional bounceAddress = Optional.empty(); /** * Sets the SMTP host name. */ @ConfigItem(defaultValue = "localhost") public String host = "localhost"; /** * The SMTP port. * The default value depends on the configuration. * The port 25 is used as default when {@link #ssl} is disabled. * This port continues to be used primarily for SMTP relaying. * SMTP relaying is the transmission of email from email server to email server. * The port 587 is the default port when {@link #ssl} is enabled. * It ensures that email is submitted securely. *

* Note that the port 465 may be used by SMTP servers, however, IANA has reassigned a new service to this port, * and it should no longer be used for SMTP communications. */ @ConfigItem public OptionalInt port = OptionalInt.empty(); /** * Sets the username to connect to the SMTP server. */ @ConfigItem public Optional username = Optional.empty(); /** * Sets the password to connect to the SMTP server. */ @ConfigItem public Optional password = Optional.empty(); /** * The name of the TLS configuration to use. *

* If a name is configured, it uses the configuration from {@code quarkus.tls..*} * If a name is configured, but no TLS configuration is found with that name then an error will be thrown. *

* If no TLS configuration name is set then, the specific TLS configuration (from {@code quarkus.mailer.*}) will be used. *

* The default TLS configuration is not used by default. */ @ConfigItem public Optional tlsConfigurationName = Optional.empty(); /** * Enables or disables the TLS/SSL. * * @deprecated Use {{@link #tls}} */ @Deprecated @ConfigItem(defaultValue = "false") public boolean ssl; /** * Whether the connection should be secured using TLS. *

* SMTP allows establishing connection with or without TLS. * When establishing a connection with TLS, the connection is secured and encrypted. * When establishing a connection without TLS, it can be secured and encrypted later using the STARTTLS command. * In this case, the connection is initially unsecured and unencrypted. * To configure this case, set this property to {@code false} and {@link #startTLS} to {@code REQUIRED} * * Note that if a TLS configuration is set, TLS is enabled automatically. So, setting this property to {@code false} is * required to not establish a connection with TLS. */ @ConfigItem public Optional tls; /** * Set whether all server certificates should be trusted. * This option is only used when {@link #ssl} is enabled. * * @deprecated Use the TLS registry instead. */ @ConfigItem @Deprecated public Optional trustAll = Optional.empty(); /** * Sets the max number of open connections to the mail server. */ @ConfigItem(defaultValue = "10") public int maxPoolSize = 10; /** * Sets the hostname to be used for HELO/EHLO and the Message-ID. */ @ConfigItem public Optional ownHostName = Optional.empty(); /** * Sets if connection pool is enabled. * If the connection pooling is disabled, the max number of sockets is enforced nevertheless. */ @ConfigItem(defaultValue = "true") public boolean keepAlive = true; /** * Disable ESMTP. *

* The RFC-1869 states that clients should always attempt {@code EHLO} as first command to determine if ESMTP * is supported, if this returns an error code, {@code HELO} is tried to use the regular SMTP command. */ @ConfigItem(defaultValue = "false") public boolean disableEsmtp; /** * Sets the TLS security mode for the connection. * Either {@code DISABLED}, {@code OPTIONAL} or {@code REQUIRED}. */ @ConfigItem(defaultValue = "OPTIONAL") public String startTLS = "OPTIONAL"; /** * Configures DKIM signature verification. */ @ConfigItem public DkimSignOptionsConfig dkim = new DkimSignOptionsConfig(); /** * Sets the login mode for the connection. * Either {@code NONE}, @{code DISABLED}, {@code OPTIONAL}, {@code REQUIRED} or {@code XOAUTH2}. *

    *
  • DISABLED means no login will be attempted
  • *
  • NONE means a login will be attempted if the server supports in and login credentials are set
  • *
  • REQUIRED means that a login will be attempted if the server supports it and the send operation will fail * otherwise
  • *
  • XOAUTH2 means that a login will be attempted using Google Gmail Oauth2 tokens
  • *
*/ @ConfigItem(defaultValue = "NONE") public String login = "NONE"; /** * Sets the allowed authentication methods. * These methods will be used only if the server supports them. * If not set, all supported methods may be used. *

* The list is given as a space separated list, such as {@code DIGEST-MD5 CRAM-SHA256 CRAM-SHA1 CRAM-MD5 PLAIN LOGIN}. */ @ConfigItem public Optional authMethods = Optional.empty(); /** * Set the trust store. * * @deprecated Use the TLS registry instead. */ @Deprecated @ConfigItem public Optional keyStore = Optional.empty(); /** * Sets the trust store password if any. * * @deprecated Use the TLS registry instead. */ @ConfigItem @Deprecated public Optional keyStorePassword = Optional.empty(); /** * Configures the trust store. * * @deprecated Use the TLS registry instead. */ @ConfigItem @Deprecated public TrustStoreConfig truststore = new TrustStoreConfig(); /** * Whether the mail should always been sent as multipart even if they don't have attachments. * When sets to true, the mail message will be encoded as multipart even for simple mails without attachments. */ @ConfigItem(defaultValue = "false") public boolean multiPartOnly; /** * Sets if sending allows recipients errors. * If set to true, the mail will be sent to the recipients that the server accepted, if any. */ @ConfigItem(defaultValue = "false") public boolean allowRcptErrors; /** * Enables or disables the pipelining capability if the SMTP server supports it. */ @ConfigItem(defaultValue = "true") public boolean pipelining = true; /** * Sets the connection pool cleaner period. * Zero disables expiration checks and connections will remain in the pool until they are closed. */ @ConfigItem(defaultValue = "PT1S") public Duration poolCleanerPeriod = Duration.ofSeconds(1L); /** * Set the keep alive timeout for the SMTP connection. * 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. */ @ConfigItem(defaultValue = "PT300S") public Duration keepAliveTimeout = Duration.ofSeconds(300L); /** * Configures NTLM (Windows New Technology LAN Manager). */ @ConfigItem public NtlmConfig ntlm = new NtlmConfig(); /** * Allows sending emails to these recipients only. *

* Approved recipients are compiled to a {@code Pattern} and must be a valid regular expression. * The created {@code Pattern} is case-insensitive as emails are case insensitive. * Provided patterns are trimmed before being compiled. * * @see {@link #logRejectedRecipients} */ @ConfigItem @ConvertWith(TrimmedPatternConverter.class) public Optional> approvedRecipients = Optional.empty(); /** * Log rejected recipients as warnings. *

* If false, the rejected recipients will be logged at the DEBUG level. * * @see {@link #approvedRecipients} */ @ConfigItem(defaultValue = "false") public boolean logRejectedRecipients = false; /** * Log invalid recipients as warnings. *

* If false, the invalid recipients will not be logged and the thrown exception will not contain the invalid email address. * */ @ConfigItem(defaultValue = "false") public boolean logInvalidRecipients = false; }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy