Mailer Reference Guide
This guide is the companion from the Mailer Getting Started Guide. It explains in more details the configuration and usage of the Quarkus Mailer.
Mailer extension
To use the mailer, you need to add the quarkus-mailer
extension.
你可以用以下方法将扩展添加到你的项目中:
> ./mvnw quarkus:add-extensions -Dextensions="mailer"
或者只需在你的项目中添加以下依赖项:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-mailer</artifactId>
</dependency>
Accessing the mailer
You can inject the mailer in your application using:
@Inject
Mailer mailer;
@Inject
ReactiveMailer reactiveMailer;
There are 2 APIs:
-
io.quarkus.mailer.Mailer
provides the imperative (blocking and synchronous) API; -
io.quarkus.mailer.reactive.ReactiveMailer
provides the reactive (non-blocking and asynchronous) API
The two APIs are equivalent feature-wise. Actually the Mailer implementation is built on top of the ReactiveMailer implementation.
|
弃用
|
To send a simple email, proceed as follows:
// Imperative API:
mailer.send(Mail.withText("to@acme.org", "A simple email from quarkus", "This is my body.").setFrom("from@acme.org"));
// Reactive API:
Uni<Void> stage = reactiveMailer.send(Mail.withText("to@acme.org", "A reactive email from quarkus", "This is my body.").setFrom("from@acme.org"));
For example, you can use the Mailer
in an HTTP endpoint as follows:
@GET
@Path("/imperative")
public void sendASimpleEmail() {
mailer.send(Mail.withText("to@acme.org", "A simple email from quarkus", "This is my body").setFrom("from@acme.org"));
}
@GET
@Path("/reactive")
public Uni<Void> sendASimpleEmailAsync() {
return reactiveMailer.send(
Mail.withText("to@acme.org", "A reactive email from quarkus", "This is my body").setFrom("from@acme.org"));
}
Creating Mail objects
The mailer lets you send io.quarkus.mailer.Mail
objects.
You can create new io.quarkus.mailer.Mail
instances from the constructor or from the Mail.withText
and
Mail.withHtml
helper methods.
The Mail
instance lets you add recipients (to, cc, or bcc), set the subject, headers, sender (from) address…
Most of these properties are optional, but the sender address is required. It can either be set on an individual Mail
instances using
.setFrom("from@acme.org");
or a global default can be configured, using
quarkus.mailer.from=from@acme.org
You can also send several Mail
objects in one call:
mailer.send(mail1, mail2, mail3);
Sending attachments
To send attachments, just use the addAttachment
methods on the io.quarkus.mailer.Mail
instance:
@GET
@Path("/attachment")
public void sendEmailWithAttachment() {
mailer.send(Mail.withText("clement.escoffier@gmail.com", "An email from quarkus with attachment",
"This is my body")
.addAttachment("my-file-1.txt",
"content of my file".getBytes(), "text/plain")
.addAttachment("my-file-2.txt",
new File("my-file.txt"), "text/plain")
);
}
Attachments can be created from raw bytes (as shown in the snippet) or files. Note that files are resolved from the working directory of the application.
Sending HTML emails with inlined attachments
When sending HTML emails, you can add inlined attachments.
For example, you can send an image with your email, and this image will be displayed in the mail content.
If you put the image file into the META-INF/resources
folder, you should specify the full path to the file, e.g. META-INF/resources/quarkus-logo.png
otherwise Quarkus will look for the file in the root directory.
@GET
@Path("/html")
public void sendingHTML() {
String body = "<strong>Hello!</strong>" + "\n" +
"<p>Here is an image for you: <img src=\"cid:my-image@quarkus.io\"/></p>" +
"<p>Regards</p>";
mailer.send(Mail.withHtml("to@acme.org", "An email in HTML", body)
.addInlineAttachment("quarkus-logo.png",
new File("quarkus-logo.png"),
"image/png", "<my-image@quarkus.io>"));
}
Note the content-id format and reference.
By spec, when you create the inline attachment, the content-id must be structured as follows: <id@domain>
.
If you don’t wrap your content-id between <>
, it is automatically wrapped for you.
When you want to reference your attachment, for instance in the src
attribute, use cid:id@domain
(without the <
and >
).
Message Body Based on Qute Templates
It’s also possible to send an e-mail where the message body is created automatically using Qute templates.
You can define a type-safe mail template in your Java code.
Just annotate a class with @io.quarkus.qute.CheckedTemplate
and all its static native
methods that return MailTemplate
will be used to define type-safe mail templates and the list of parameters they require:
import io.quarkus.mailer.MailTemplate;
import io.quarkus.qute.CheckedTemplate;
@Path("")
public class MailingResource {
@CheckedTemplate
static class Templates {
public static native MailTemplateInstance hello(String name); (1)
}
@GET
@Path("/mail")
public Uni<Void> send() {
// the template looks like: Hello {name}! (2)
return Templates.hello("John")
.to("to@acme.org") (3)
.subject("Hello from Qute template")
.send(); (4)
}
}
1 | By convention, the enclosing class name and method names are used to locate the template. In this particular case,
we will use the src/main/resources/templates/MailingResource/hello.html and src/main/resources/templates/MailingResource/hello.txt templates to create the message body. |
2 | Set the data used in the template. |
3 | Create a mail template instance and set the recipient. |
4 | MailTemplate.send() triggers the rendering and, once finished, sends the e-mail via a Mailer instance. |
Alternatively, use a Java record that implements io.quarkus.mailer.MailTemplate
.
The record components represent the template parameters.
import io.quarkus.mailer.MailTemplate;
import io.quarkus.qute.CheckedTemplate;
@Path("")
public class MailingResource {
record hello(String name) implements MailTemplateInstance { (1)
}
@GET
@Path("/mail")
public Uni<Void> send() {
// the template looks like: Hello {name}! (2)
return new hello("John")
.to("to@acme.org") (3)
.subject("Hello from Qute template")
.send(); (4)
}
}
1 | By convention, the enclosing class name and the record name are used to locate the template. In this particular case,
we will use the src/main/resources/templates/MailingResource/hello.html and src/main/resources/templates/MailingResource/hello.txt templates to create the message body. |
2 | Set the data used in the template. |
3 | Create a mail template instance and set the recipient. |
4 | MailTemplate.send() triggers the rendering and, once finished, sends the e-mail via a Mailer instance. |
You can also do this without type-safe templates:
import io.quarkus.mailer.MailTemplate;
@Inject
@Location("hello")
MailTemplate hello; (1)
@GET
@Path("/mail")
public Uni<Void> send() {
return hello.to("to@acme.org") (2)
.subject("Hello from Qute template")
.data("name", "John") (3)
.send() (4)
}
1 | If there is no @Location qualifier provided, the field name is used to locate the template.
Otherwise, search for the template as the specified location. In this particular case, we will use the src/main/resources/templates/hello.html and src/main/resources/templates/hello.txt templates to create the message body. |
2 | Create a mail template instance and set the recipient. |
3 | Set the data used in the template. |
4 | MailTemplate.send() triggers the rendering and, once finished, sends the e-mail via a Mailer instance. |
Injected mail templates are validated during build.
The build fails if there is no matching template in src/main/resources/templates .
|
执行模型
The reactive mailer is non-blocking, and the results are provided on an I/O thread. See the Quarkus Reactive Architecture documentation for further details on this topic.
The non-reactive mailer blocks until the messages are sent to the SMTP server. Note that does not mean that the message is delivered, just that it’s been sent successfully to the SMTP server, which will be responsible for the delivery.
Testing email sending
Because it is very inconvenient to send emails during development and testing, you can set the quarkus.mailer.mock
boolean
configuration to true
to prevent the actual sending of emails but instead print them on stdout and collect them in a MockMailbox
bean instead.
This is the default if you are running Quarkus in dev or test mode.
You can then write tests to verify that your emails were sent, for example, by a REST endpoint:
@QuarkusTest
class MailTest {
private static final String TO = "foo@quarkus.io";
@Inject
MockMailbox mailbox;
@BeforeEach
void init() {
mailbox.clear();
}
@Test
void testTextMail() throws MessagingException, IOException {
// call a REST endpoint that sends email
given()
.when()
.get("/send-email")
.then()
.statusCode(202)
.body(is("OK"));
// verify that it was sent
List<Mail> sent = mailbox.getMessagesSentTo(TO);
assertThat(sent).hasSize(1);
Mail actual = sent.get(0);
assertThat(actual.getText()).contains("Wake up!");
assertThat(actual.getSubject()).isEqualTo("Alarm!");
assertThat(mailbox.getTotalMessagesSent()).isEqualTo(6);
}
}
Another option is to use the Quarkus Mailpit extension which provides Dev Services for Mailpit, a nice UI for testing and debugging email sending.
Using the underlying Vert.x Mail Client
The Quarkus Mailer is implemented on top of the Vert.x Mail Client, providing an asynchronous and non-blocking way to send emails. If you need fine control on how the mail is sent, for instance if you need to retrieve the message ids, you can inject the underlying client, and use it directly:
@Inject MailClient client;
Three API flavors are exposed:
-
the Mutiny client (
io.vertx.mutiny.ext.mail.MailClient
) -
the bare client (
io.vertx.ext.mail.MailClient
)
Check the Using Vert.x guide for further details about these different APIs and how to select the most suitable for you.
The retrieved MailClient
is configured using the configuration property presented above.
You can also create your own instance, and pass your own configuration.
Using SSL with native executables
Note that if you enable SSL for the mailer and you want to build a native executable, you will need to enable the SSL support. Please refer to the Using SSL With Native Executables guide for more information.
Configuring the SMTP credentials
It is recommended to encrypt any sensitive data, such as the quarkus.mailer.password
.
One approach is to save the value into a secure store like HashiCorp Vault, and refer to it from the configuration.
Assuming for instance that Vault contains key mail-password
at path myapps/myapp/myconfig
, then the mailer
extension can be simply configured as:
...
# path within the kv secret engine where is located the application sensitive configuration
# This uses the https://github.com/quarkiverse/quarkus-vault extension.
quarkus.vault.secret-config-kv-path=myapps/myapp/myconfig
...
quarkus.mailer.password=${mail-password}
Please note that the password value is evaluated only once, at startup time. If mail-password
was changed in Vault,
the only way to get the new value would be to restart the application.
Do use Vault, you need the Quarkus Vault extension. More details about this extension and its configuration can be found in the extension documentation. |
For more information about the Mailer configuration please refer to the Configuration Reference. |
Configuring TLS
SMTP provides various way to use TLS:
-
StartTLS: The client connects to the server using a plain connection and then upgrades to a secure connection.
-
SSL/TLS: The client connects to the server using a secure connection from the start.
Configuring STARTTLS
To use STARTTLS
, you need to configure the start-tls
property to REQUIRED
or OPTIONAL
and set tls
to false
:
quarkus.mailer.tls=false
quarkus.mailer.start-tls=REQUIRED
Setting tls
to false
ensure we connect using a plain connection and then upgrade to a secure connection using STARTTLS
.
To configure the trust store, you can use a named TLS configuration stored in the TLS registry:
quarkus.mailer.tls=false
quarkus.mailer.start-tls=REQUIRED
quarkus.mailer.tls-configuration-name=my-mailer # Reference the named configuration
quarkus.tls.my-mailer.trust-store.pem.certs=server-cert.pem # Configure the trust store
While not recommended, you can trust all certificates by setting quarkus.tls.trust-all
to true
:
quarkus.mailer.tls=false
quarkus.mailer.start-tls=REQUIRED
quarkus.mailer.tls-configuration-name=my-mailer # Reference the named configuration
quarkus.tls.my-mailer.trust-all=true
Alternatively, you can use the deprecated quarkus.mailer.trust-store.paths
and quarkus.mailer.trust-all
properties:
quarkus.mailer.tls=false
quarkus.mailer.start-tls=REQUIRED
quarkus.mailer.truststore.paths=target/certs/mailpit-ca.crt
quarkus.mailer.tls=false
quarkus.mailer.start-tls=REQUIRED
quarkus.mailer.trust-all=true
To use START_TLS , make sure you set tls to false and start-tls to REQUIRED or OPTIONAL .
|
Configuring SSL/TLS
To establish a TLS connection, you need to configure a named configuration using the TLS registry:
quarkus.tls.my-mailer.trust-store.p12.path=server-truststore.p12
quarkus.tls.my-mailer.trust-store.p12.password=secret
quarkus.mailer.tls-configuration-name=my-mailer # Reference the named configuration
When using the mailer, using a named configuration is required to avoid conflicts with other TLS configurations. The mailer will not use the default TLS configuration. |
When you configure a named TLS configuration, TLS is enabled by default. If your SMTP server uses a valid (trusted) certificate, and thus do not require a specific TLS configuration, you need to enable TLS explicitly (as you do not have to configure a trust store):
quarkus.mailer.tls=true
When
You can also use the deprecated |
Multiple mailer configurations
Some applications require to send mails through different SMTP servers.
This use case is perfectly supported in Quarkus and you can configure several mailers:
quarkus.mailer.from=your-from-address@gmail.com (1)
quarkus.mailer.host=smtp.gmail.com
quarkus.mailer.aws.from=your-from-address@gmail.com (2)
quarkus.mailer.aws.host=${ses.smtp}
quarkus.mailer.aws.port=587
quarkus.mailer.sendgrid.from=your-from-address@gmail.com (3)
quarkus.mailer.sendgrid.host=${sendgrid.smtp-host}
quarkus.mailer.sendgrid.port=465
1 | Configuration for the default mailer. |
2 | Configuration for a mailer named aws . |
3 | Configuration for a mailer named sendgrid . |
Then, access your named mailers by using the @MailerName
CDI qualifier:
@Inject (1)
Mailer mailer;
@Inject (1)
ReactiveMailer reactiveMailer;
@Inject (1)
@Location("hello")
MailTemplate mailTemplate;
@Inject
@MailerName("aws") (2)
Mailer mailer;
@Inject
@MailerName("aws") (2)
ReactiveMailer reactiveMailer;
@Inject
@MailerName("aws") (2)
@Location("hello")
MailTemplate mailTemplate;
@Inject
@MailerName("sendgrid") (3)
Mailer mailer;
@Inject
@MailerName("sendgrid") (3)
ReactiveMailer reactiveMailer;
@Inject
@MailerName("sendgrid") (3)
@Location("hello")
MailTemplate mailTemplate;
1 | Inject instances without qualifier for the default configuration. |
2 | Inject instances with the @MailerName("aws") qualifier for the aws configuration. |
3 | Inject instances with the @MailerName("sendgrid") qualifier for the sendgrid configuration. |
Type-safe template using Use |
Mailer configuration for popular email services
This section provides the configurations to use with popular mail services.
Gmail specific configuration
If you want to use the Gmail SMTP server, first create a dedicated password in Google Account > Security > App passwords
or go to https://myaccount.google.com/apppasswords.
You need to switch on 2-Step Verification at https://myaccount.google.com/security in order to access the App passwords page. |
When done, you can configure your Quarkus application by adding the following properties to your application.properties
:
With STARTTLS
:
quarkus.mailer.auth-methods=DIGEST-MD5 CRAM-SHA256 CRAM-SHA1 CRAM-MD5 PLAIN LOGIN
quarkus.mailer.from=YOUREMAIL@gmail.com
quarkus.mailer.host=smtp.gmail.com
quarkus.mailer.port=587
quarkus.mailer.start-tls=REQUIRED
quarkus.mailer.username=YOUREMAIL@gmail.com
quarkus.mailer.password=YOURGENERATEDAPPLICATIONPASSWORD
quarkus.mailer.mock=false # In dev mode, prevent from using the mock SMTP server
Or with TLS/SSL:
quarkus.mailer.auth-methods=DIGEST-MD5 CRAM-SHA256 CRAM-SHA1 CRAM-MD5 PLAIN LOGIN
quarkus.mailer.from=YOUREMAIL@gmail.com
quarkus.mailer.host=smtp.gmail.com
quarkus.mailer.port=465
quarkus.mailer.tls=true
quarkus.mailer.username=YOUREMAIL@gmail.com
quarkus.mailer.password=YOURGENERATEDAPPLICATIONPASSWORD
quarkus.mailer.mock=false # In dev mode, prevent from using the mock SMTP server
The |
AWS SES - Simple Email Service
先决条件
-
SES Identity Check, follow the process to setup the DKIM verification
-
Retrieve SMTP endpoint from https://us-east-1.console.aws.amazon.com/ses/home, example:
email-smtp.us-east-1.amazonaws.com
-
Create SMTP credentials if needed
-
If you are in a sandbox, also verify the recipients (using email verification)
Configuration
ses.smtp=...
ses.user=...
ses.password=...
ses.from=an email address from the verified domain
quarkus.mailer.host=${ses.smtp}
quarkus.mailer.port=587
quarkus.mailer.tls=false
quarkus.mailer.username=${ses.user}
quarkus.mailer.password=${ses.password}
quarkus.mailer.start-tls=REQUIRED
quarkus.mailer.login=REQUIRED
quarkus.mailer.from=${ses.from}
quarkus.mailer.mock=false # In dev mode, prevent from using the mock SMTP server
MailJet
The mailjet integration is used on an SMTP relay. You are going to send the email using this SMTP server.
先决条件
-
Create a mailJet account and the API key / Secret Key
-
The sender address must be verified (SPF + DKIM) and the email explicitly added to the verified list
Configuration
mailjet.smtp-host=in-v3.mailjet.com
mailjet.api-key=...
mailjet.secret-key=...
mailjet.from=the verified sender address
quarkus.mailer.host=${mailjet.smtp-host}
quarkus.mailer.port=465
quarkus.mailer.username=${mailjet.api-key}
quarkus.mailer.password=${mailjet.secret-key}
quarkus.mailer.start-tls=OPTIONAL
quarkus.mailer.tls=true
quarkus.mailer.login=REQUIRED
quarkus.mailer.from=${mailjet.from}
quarkus.mailer.mock=false # In dev mode, prevent from using the mock SMTP server
Sendgrid
Configuration
sendgrid.smtp-host=smtp.sendgrid.net
sendgrid.username=apikey
sendgrid.key=...
quarkus.mailer.host=${sendgrid.smtp-host}
quarkus.mailer.port=465
quarkus.mailer.username=${sendgrid.username}
quarkus.mailer.password=${sendgrid.key}
quarkus.mailer.start-tls=OPTIONAL
quarkus.mailer.login=REQUIRED
quarkus.mailer.from=...
quarkus.mailer.tls=true
quarkus.mailer.mock=false # In dev mode, prevent from using the mock SMTP server
Office 365
先决条件
-
Enable SMTP Access to your Office 365 mailbox, you can do it from the administration console (see this guide for more information)
Configuration
quarkus.mailer.from=NAME<YOUREMAIL@YOURDOMAIN.COM>
quarkus.mailer.host=smtp.office365.com
quarkus.mailer.port=587
quarkus.mailer.username=YOUREMAIL@YOURDOMAIN.COM
quarkus.mailer.password=YOURPASSWORD
quarkus.mailer.auth-methods=LOGIN
quarkus.mailer.login=REQUIRED
quarkus.mailer.mock=false # In dev mode, prevent from using the mock SMTP server
Mailer Configuration Reference
Configuration property fixed at build time - All other configuration properties are overridable at runtime
Configuration property |
类型 |
默认 |
---|---|---|
Caches data from attachment’s Stream to a temporary file. It tries to delete it after sending email. Environment variable: Show more |
boolean |
|
Sets the default Environment variable: Show more |
string |
|
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. Environment variable: Show more |
boolean |
|
Sets the default bounce email address. A bounced email, or bounce, is an email message that gets rejected by a mail server. Environment variable: Show more |
string |
|
string |
|
|
The SMTP port. The default value depends on the configuration. The port 25 is used as default when 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. Environment variable: Show more |
int |
|
Sets the username to connect to the SMTP server. Environment variable: Show more |
string |
|
Sets the password to connect to the SMTP server. Environment variable: Show more |
string |
|
The name of the TLS configuration to use. If a name is configured, it uses the configuration from If no TLS configuration name is set then, the specific TLS configuration (from The default TLS configuration is not used by default. Environment variable: Show more |
string |
|
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 Environment variable: Show more |
boolean |
|
Sets the max number of open connections to the mail server. Environment variable: Show more |
int |
|
Sets the hostname to be used for HELO/EHLO and the Message-ID. Environment variable: Show more |
string |
|
Sets if connection pool is enabled. If the connection pooling is disabled, the max number of sockets is enforced nevertheless. Environment variable: Show more |
boolean |
|
Disable ESMTP. The RFC-1869 states that clients should always attempt Environment variable: Show more |
boolean |
|
Sets the TLS security mode for the connection. Either Environment variable: Show more |
string |
|
Enables DKIM signing. Environment variable: Show more |
boolean |
|
Configures the PKCS#8 format private key used to sign the email. Environment variable: Show more |
string |
|
Configures the PKCS#8 format private key file path. Environment variable: Show more |
string |
|
Configures the Agent or User Identifier (AUID). Environment variable: Show more |
string |
|
Configures the selector used to query the public key. Environment variable: Show more |
string |
|
Configures the Signing Domain Identifier (SDID). Environment variable: Show more |
string |
|
Configures the canonicalization algorithm for signed headers. Environment variable: Show more |
|
|
Configures the canonicalization algorithm for mail body. Environment variable: Show more |
|
|
Configures the body limit to sign. Must be greater than zero. Environment variable: Show more |
int |
|
Configures to enable or disable signature sign timestamp. Environment variable: Show more |
boolean |
|
Configures the expire time in seconds when the signature sign will be expired. Must be greater than zero. Environment variable: Show more |
long |
|
Configures the signed headers in DKIM, separated by commas. The order in the list matters. Environment variable: Show more |
list of string |
|
Sets the login mode for the connection. Either
Environment variable: Show more |
string |
|
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 Environment variable: Show more |
string |
|
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. Environment variable: Show more |
boolean |
|
Sets if sending allows recipients errors. If set to true, the mail will be sent to the recipients that the server accepted, if any. Environment variable: Show more |
boolean |
|
Enables or disables the pipelining capability if the SMTP server supports it. Environment variable: Show more |
boolean |
|
Sets the connection pool cleaner period. Zero disables expiration checks and connections will remain in the pool until they are closed. Environment variable: Show more |
|
|
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. Environment variable: Show more |
|
|
Sets the workstation used on NTLM authentication. Environment variable: Show more |
string |
|
Sets the domain used on NTLM authentication. Environment variable: Show more |
string |
|
Allows sending emails to these recipients only. Approved recipients are compiled to a Environment variable: Show more |
list of Pattern |
|
Log rejected recipients as warnings. If false, the rejected recipients will be logged at the DEBUG level. Environment variable: Show more |
boolean |
|
类型 |
默认 |
|
Sets the default Environment variable: Show more |
string |
|
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. Environment variable: Show more |
boolean |
|
Sets the default bounce email address. A bounced email, or bounce, is an email message that gets rejected by a mail server. Environment variable: Show more |
string |
|
Sets the SMTP host name. Environment variable: Show more |
string |
|
The SMTP port. The default value depends on the configuration. The port 25 is used as default when 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. Environment variable: Show more |
int |
|
Sets the username to connect to the SMTP server. Environment variable: Show more |
string |
|
Sets the password to connect to the SMTP server. Environment variable: Show more |
string |
|
The name of the TLS configuration to use. If a name is configured, it uses the configuration from If no TLS configuration name is set then, the specific TLS configuration (from The default TLS configuration is not used by default. Environment variable: Show more |
string |
|
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 Environment variable: Show more |
boolean |
|
Sets the max number of open connections to the mail server. Environment variable: Show more |
int |
|
Sets the hostname to be used for HELO/EHLO and the Message-ID. Environment variable: Show more |
string |
|
Sets if connection pool is enabled. If the connection pooling is disabled, the max number of sockets is enforced nevertheless. Environment variable: Show more |
boolean |
|
Disable ESMTP. The RFC-1869 states that clients should always attempt Environment variable: Show more |
boolean |
|
Sets the TLS security mode for the connection. Either Environment variable: Show more |
string |
|
Enables DKIM signing. Environment variable: Show more |
boolean |
|
Configures the PKCS#8 format private key used to sign the email. Environment variable: Show more |
string |
|
Configures the PKCS#8 format private key file path. Environment variable: Show more |
string |
|
Configures the Agent or User Identifier (AUID). Environment variable: Show more |
string |
|
Configures the selector used to query the public key. Environment variable: Show more |
string |
|
Configures the Signing Domain Identifier (SDID). Environment variable: Show more |
string |
|
Configures the canonicalization algorithm for signed headers. Environment variable: Show more |
|
|
Configures the canonicalization algorithm for mail body. Environment variable: Show more |
|
|
Configures the body limit to sign. Must be greater than zero. Environment variable: Show more |
int |
|
Configures to enable or disable signature sign timestamp. Environment variable: Show more |
boolean |
|
Configures the expire time in seconds when the signature sign will be expired. Must be greater than zero. Environment variable: Show more |
long |
|
Configures the signed headers in DKIM, separated by commas. The order in the list matters. Environment variable: Show more |
list of string |
|
Sets the login mode for the connection. Either
Environment variable: Show more |
string |
|
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 Environment variable: Show more |
string |
|
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. Environment variable: Show more |
boolean |
|
Sets if sending allows recipients errors. If set to true, the mail will be sent to the recipients that the server accepted, if any. Environment variable: Show more |
boolean |
|
Enables or disables the pipelining capability if the SMTP server supports it. Environment variable: Show more |
boolean |
|
Sets the connection pool cleaner period. Zero disables expiration checks and connections will remain in the pool until they are closed. Environment variable: Show more |
|
|
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. Environment variable: Show more |
|
|
Sets the workstation used on NTLM authentication. Environment variable: Show more |
string |
|
Sets the domain used on NTLM authentication. Environment variable: Show more |
string |
|
Allows sending emails to these recipients only. Approved recipients are compiled to a Environment variable: Show more |
list of Pattern |
|
Log rejected recipients as warnings. If false, the rejected recipients will be logged at the DEBUG level. Environment variable: Show more |
boolean |
|
About the Duration format
To write duration values, use the standard You can also use a simplified format, starting with a number:
In other cases, the simplified format is translated to the
|