编辑此页面

邮件发送器参考指南

本指南是Mailer 入门指南的配套文档。它更详细地解释了 Quarkus Mailer 的配置和用法。

Mailer 扩展

要使用 mailer,您需要添加 quarkus-mailer 扩展。

您可以使用以下方式将扩展添加到您的项目中

> ./mvnw quarkus:add-extensions -Dextensions="mailer"

或者直接将以下依赖项添加到您的项目中

<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-mailer</artifactId>
</dependency>

访问 Mailer

您可以使用以下方式在应用程序中注入 mailer

@Inject
Mailer mailer;

@Inject
ReactiveMailer reactiveMailer;

有两种 API

  • io.quarkus.mailer.Mailer 提供命令式(阻塞和同步)API;

  • io.quarkus.mailer.reactive.ReactiveMailer 提供反应式(非阻塞和异步)API

这两个 API 在功能上是等效的。实际上,Mailer 实现是构建在 ReactiveMailer 实现之上的。
弃用

io.quarkus.mailer.ReactiveMailer 已弃用,建议使用 io.quarkus.mailer.reactive.ReactiveMailer

要发送简单的电子邮件,请按如下步骤操作

// 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"));

例如,您可以在 HTTP 端点中使用 Mailer,如下所示

@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"));
}

创建 Mail 对象

Mailer 允许您发送 io.quarkus.mailer.Mail 对象。您可以从构造函数或 Mail.withTextMail.withHtml 辅助方法创建新的 io.quarkus.mailer.Mail 实例。Mail 实例允许您添加收件人(to、cc 或 bcc),设置主题、标头、发件人 (from) 地址……

这些属性大多数是可选的,但发件人地址是必需的。可以使用以下方式在单个 Mail 实例上设置发件人地址

.setFrom("from@acme.org");

或者可以使用以下方式配置全局默认值

quarkus.mailer.from=from@acme.org

您还可以在一个调用中发送多个 Mail 对象

mailer.send(mail1, mail2, mail3);

发送附件

要发送附件,只需在 io.quarkus.mailer.Mail 实例上使用 addAttachment 方法

@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")
        );
}

附件可以从原始字节(如代码片段中所示)或文件创建。请注意,文件是从应用程序的工作目录解析的。

发送带有内联附件的 HTML 电子邮件

发送 HTML 电子邮件时,您可以添加内联附件。例如,您可以将图像与电子邮件一起发送,并且该图像将显示在邮件内容中。如果将图像文件放入 META-INF/resources 文件夹中,则应指定文件的完整路径,例如 META-INF/resources/quarkus-logo.png,否则 Quarkus 将在根目录中查找该文件。

@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>"));
}

请注意 content-id 格式和引用。按照规范,创建内联附件时,content-id 的结构必须如下所示:<id@domain>。如果您没有将 content-id 包装在 <> 之间,它将自动为您包装。当您想要引用您的附件时,例如在 src 属性中,使用 cid:id@domain(不带 <>)。

基于 Qute 模板的消息正文

也可以发送一封电子邮件,其中的消息正文是使用Qute 模板自动创建的。

您可以在 Java 代码中定义类型安全的邮件模板。只需使用 @io.quarkus.qute.CheckedTemplate 注释一个类,并且该类的所有返回 MailTemplatestatic native 方法将用于定义类型安全的邮件模板和它们需要的参数列表

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 按照约定,封闭类名和方法名用于定位模板。在这个特定的例子中,我们将使用 src/main/resources/templates/MailingResource/hello.htmlsrc/main/resources/templates/MailingResource/hello.txt 模板来创建消息正文。
2 设置模板中使用的数据。
3 创建一个邮件模板实例并设置收件人。
4 MailTemplate.send() 触发渲染,并在完成后通过 Mailer 实例发送电子邮件。

或者,使用实现 io.quarkus.mailer.MailTemplate 的 Java 记录。记录组件表示模板参数。

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 按照约定,封闭类名和记录名称用于定位模板。在这个特定的例子中,我们将使用 src/main/resources/templates/MailingResource/hello.htmlsrc/main/resources/templates/MailingResource/hello.txt 模板来创建消息正文。
2 设置模板中使用的数据。
3 创建一个邮件模板实例并设置收件人。
4 MailTemplate.send() 触发渲染,并在完成后通过 Mailer 实例发送电子邮件。

您也可以在没有类型安全模板的情况下执行此操作

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 如果没有提供 @Location 限定符,则字段名称用于定位模板。否则,按照指定的位置搜索模板。在这个特定的例子中,我们将使用 src/main/resources/templates/hello.htmlsrc/main/resources/templates/hello.txt 模板来创建消息正文。
2 创建一个邮件模板实例并设置收件人。
3 设置模板中使用的数据。
4 MailTemplate.send() 触发渲染,并在完成后通过 Mailer 实例发送电子邮件。
注入的邮件模板在构建期间进行验证。如果 src/main/resources/templates 中没有匹配的模板,则构建失败。

执行模型

反应式 mailer 是非阻塞的,结果在 I/O 线程上提供。有关此主题的更多详细信息,请参阅 Quarkus 反应式架构文档

非反应式 mailer 会阻塞,直到消息发送到 SMTP 服务器。请注意,这并不意味着消息已送达,只是表示消息已成功发送到 SMTP 服务器,SMTP 服务器将负责传递消息。

测试电子邮件发送

因为在开发和测试期间发送电子邮件非常不方便,所以您可以将 quarkus.mailer.mock 布尔配置设置为 true,以防止实际发送电子邮件,而是将它们打印到 stdout 并将它们收集到 MockMailbox bean 中。如果您在开发或测试模式下运行 Quarkus,这是默认行为。

然后,您可以编写测试来验证您的电子邮件是否已发送,例如,通过 REST 端点

@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);
    }
}

另一种选择是使用 Quarkus Mailpit 扩展,该扩展为 Mailpit 提供了 Dev Services,这是一个用于测试和调试电子邮件发送的不错的 UI。

使用底层 Vert.x Mail Client

Quarkus Mailer 是在 Vert.x Mail Client 之上实现的,提供了一种异步和非阻塞的方式来发送电子邮件。如果您需要精细地控制邮件的发送方式,例如,如果您需要检索消息 ID,您可以注入底层客户端,并直接使用它

@Inject MailClient client;

公开了三个 API 版本

  • Mutiny 客户端 (io.vertx.mutiny.ext.mail.MailClient)

  • 裸客户端 (io.vertx.ext.mail.MailClient)

有关这些不同 API 以及如何选择最适合您的 API 的更多详细信息,请查看使用 Vert.x 指南

检索到的 MailClient 使用上面介绍的配置属性进行配置。您也可以创建自己的实例,并传递您自己的配置。

将 SSL 与本机可执行文件一起使用

请注意,如果您为 mailer 启用 SSL 并且想要构建本机可执行文件,则需要启用 SSL 支持。有关更多信息,请参阅将 SSL 与本机可执行文件一起使用指南。

配置 SMTP 凭据

建议加密任何敏感数据,例如 quarkus.mailer.password。一种方法是将该值保存到 HashiCorp Vault 等安全存储中,并从配置中引用它。例如,假设 Vault 在路径 myapps/myapp/myconfig 包含键 mail-password,则可以简单地将 mailer 扩展配置为

...
# 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}

请注意,密码值仅在启动时评估一次。如果 mail-password 在 Vault 中更改,则获取新值的唯一方法是重新启动应用程序。

要使用 Vault,您需要 Quarkus Vault 扩展。有关此扩展及其配置的更多详细信息,请参阅 扩展文档
有关 Mailer 配置的更多信息,请参阅配置参考

配置 TLS

SMTP 提供了多种使用 TLS 的方式

  • StartTLS:客户端使用纯连接连接到服务器,然后升级到安全连接。

  • SSL/TLS:客户端从一开始就使用安全连接连接到服务器。

配置 STARTTLS

要使用 STARTTLS,您需要将 start-tls 属性配置为 REQUIREDOPTIONAL,并将 tls 设置为 false

quarkus.mailer.tls=false
quarkus.mailer.start-tls=REQUIRED

tls 设置为 false 可确保我们使用纯连接进行连接,然后使用 STARTTLS 升级到安全连接。

要配置信任存储,您可以使用存储在TLS 注册表中的命名 TLS 配置

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

虽然不建议这样做,但您可以通过将 quarkus.tls.trust-all 设置为 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

或者,您可以使用已弃用quarkus.mailer.trust-store.pathsquarkus.mailer.trust-all 属性

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
要使用 START_TLS,请确保将 tls 设置为 false,并将 start-tls 设置为 REQUIREDOPTIONAL

配置 SSL/TLS

要建立 TLS 连接,您需要使用 TLS 注册表配置命名配置

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
使用 mailer 时,需要使用命名配置以避免与其他 TLS 配置发生冲突。Mailer 不会使用默认的 TLS 配置。

当您配置命名 TLS 配置时,默认情况下会启用 TLS。如果您的 SMTP 服务器使用有效的(受信任的)证书,因此不需要特定的 TLS 配置,您需要显式启用 TLS(因为您不必配置信任存储)

quarkus.mailer.tls=true

quarkus.tls.trust-all 设置为 true 时,信任存储配置将被忽略。不建议在生产环境中使用此配置。此外,我们建议避免使用 quarkus.tls.trust-all,如果需要 trust-all,请改用命名配置

quarkus.tls.my-mailer.trust-all=true
quarkus.mailer.tls-configuration-name=my-mailer # Reference the named configuration

您还可以使用已弃用的 quarkus.mailer.trust-all=true 属性。

多个 mailer 配置

某些应用程序需要通过不同的 SMTP 服务器发送邮件。

Quarkus 完全支持此用例,您可以配置多个 mailer

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 默认 mailer 的配置。
2 名为 aws 的 mailer 的配置。
3 名为 sendgrid 的 mailer 的配置。

然后,使用 @MailerName CDI 限定符访问您的命名 mailer

@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 注入没有限定符的实例用于默认配置。
2 注入带有 @MailerName("aws") 限定符的实例用于 aws 配置。
3 注入带有 @MailerName("sendgrid") 限定符的实例用于 sendgrid 配置。

使用 @CheckedTemplate 的类型安全模板目前仅支持默认的 mailer 配置。

使用 MailTemplate 注入用于命名的 mailer 配置。

本节提供了与常用邮件服务一起使用的配置。

Gmail 特定配置

如果您想使用 Gmail SMTP 服务器,请首先在 Google 帐户 > 安全 > 应用密码 中创建一个专用密码,或转到 https://myaccount.google.com/apppasswords

您需要在 https://myaccount.google.com/security 上启用 2 步验证,才能访问应用密码页面。

完成后,您可以通过将以下属性添加到 application.properties 来配置您的 Quarkus 应用程序

使用 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

或使用 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

Quarkus mailer 需要 quarkus.mailer.auth-methods 配置选项才能支持使用 Gmail 进行密码身份验证。默认情况下,mailer 和 Gmail 都默认为 XOAUTH2,这需要注册应用程序、获取令牌等。

AWS SES - 简单电子邮件服务

先决条件

  1. SES 身份检查,按照流程设置 DKIM 验证

  2. https://us-east-1.console.aws.amazon.com/ses/home 检索 SMTP 端点,示例:email-smtp.us-east-1.amazonaws.com

  3. 如果需要,创建 SMTP 凭据

  4. 如果您在沙盒中,还要验证收件人(使用电子邮件验证)

配置

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

mailjet 集成在 SMTP 中继上使用。您将使用此 SMTP 服务器发送电子邮件。

先决条件

  1. 创建一个 mailJet 帐户和 API 密钥/密钥

  2. 发件人地址必须经过验证 (SPF + DKIM),并且电子邮件必须显式添加到已验证列表中

配置

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

先决条件

  • 按照说明使用 DKIM 验证发件人域

配置

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

先决条件

  1. 启用对您的 Office 365 邮箱的 SMTP 访问,您可以从管理控制台执行此操作(有关更多信息,请参阅本指南

配置

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 配置参考

构建时固定的配置属性 - 所有其他配置属性都可以在运行时覆盖

配置属性

类型

默认

将附件的 Stream 中的数据缓存到临时文件。它尝试在发送电子邮件后删除它。

环境变量:QUARKUS_MAILER_CACHE_ATTACHMENTS

显示更多

布尔值

false

其他命名 mailer

类型

默认

quarkus.mailer."mailer-name".from

设置默认的 from 属性,如果在 io.quarkus.mailer.Mail 实例中未指定。它是发件人电子邮件地址。

环境变量:QUARKUS_MAILER_FROM

显示更多

字符串

quarkus.mailer."mailer-name".mock

启用模拟模式。启用后,邮件不会发送,而是存储在内存邮箱中。电子邮件的内容也会打印在控制台上。

在 PROD 上默认禁用,在 DEV 和 TEST 模式下默认启用。

环境变量:QUARKUS_MAILER_MOCK

显示更多

布尔值

quarkus.mailer."mailer-name".bounce-address

设置默认的退回电子邮件地址。退回的电子邮件或退回邮件是指被邮件服务器拒绝的电子邮件消息。

环境变量:QUARKUS_MAILER_BOUNCE_ADDRESS

显示更多

字符串

quarkus.mailer."mailer-name".host

设置 SMTP 主机名。

环境变量:QUARKUS_MAILER_HOST

显示更多

字符串

localhost

quarkus.mailer."mailer-name".port

SMTP 端口。默认值取决于配置。当 ssl 禁用时,端口 25 用作默认端口。此端口继续主要用于 SMTP 中继。SMTP 中继是指电子邮件从电子邮件服务器传输到电子邮件服务器。当 ssl 启用时,端口 587 是默认端口。它确保电子邮件以安全方式提交。

请注意,端口 465 可能会被 SMTP 服务器使用,但是,IANA 已将一项新服务重新分配给此端口,并且不应再将其用于 SMTP 通信。

环境变量:QUARKUS_MAILER_PORT

显示更多

整数

quarkus.mailer."mailer-name".username

设置连接到 SMTP 服务器的用户名。

环境变量:QUARKUS_MAILER_USERNAME

显示更多

字符串

quarkus.mailer."mailer-name".password

设置连接到 SMTP 服务器的密码。

环境变量:QUARKUS_MAILER_PASSWORD

显示更多

字符串

quarkus.mailer."mailer-name".tls-configuration-name

要使用的 TLS 配置的名称。

如果配置了名称,它将使用来自 quarkus.tls.<name>.* 的配置。如果配置了名称,但找不到具有该名称的 TLS 配置,则将引发错误。

如果未设置 TLS 配置名称,则将使用特定的 TLS 配置(来自 quarkus.mailer.*)。

默认情况下,使用默认 TLS 配置。

环境变量:QUARKUS_MAILER_TLS_CONFIGURATION_NAME

显示更多

字符串

quarkus.mailer."mailer-name".tls

连接是否应使用 TLS 进行保护。

SMTP 允许建立带有或不带有 TLS 的连接。当建立带有 TLS 的连接时,连接是安全和加密的。当建立不带有 TLS 的连接时,可以使用 STARTTLS 命令稍后对其进行保护和加密。在这种情况下,连接最初是不安全和未加密的。要配置这种情况,请将此属性设置为 false,并将 start-tls 设置为 REQUIRED。请注意,如果设置了 TLS 配置,则会自动启用 TLS。因此,需要将此属性设置为 false 才能不建立带有 TLS 的连接。

环境变量:QUARKUS_MAILER_TLS

显示更多

布尔值

quarkus.mailer."mailer-name".max-pool-size

设置到邮件服务器的最大打开连接数。

环境变量:QUARKUS_MAILER_MAX_POOL_SIZE

显示更多

整数

10

quarkus.mailer."mailer-name".own-host-name

设置用于 HELO/EHLO 和 Message-ID 的主机名。

环境变量:QUARKUS_MAILER_OWN_HOST_NAME

显示更多

字符串

quarkus.mailer."mailer-name".keep-alive

设置是否启用连接池。如果禁用连接池,则仍然会强制执行最大套接字数。

环境变量:QUARKUS_MAILER_KEEP_ALIVE

显示更多

布尔值

true

quarkus.mailer."mailer-name".disable-esmtp

禁用 ESMTP。

RFC-1869 规定客户端应始终尝试 EHLO 作为第一个命令,以确定是否支持 ESMTP,如果这返回错误代码,则尝试 HELO 以使用常规 SMTP 命令。

环境变量:QUARKUS_MAILER_DISABLE_ESMTP

显示更多

布尔值

false

quarkus.mailer."mailer-name".start-tls

设置连接的 TLS 安全模式。可以是 DISABLEDOPTIONALREQUIRED

环境变量:QUARKUS_MAILER_START_TLS

显示更多

字符串

OPTIONAL

quarkus.mailer."mailer-name".dkim.enabled

启用 DKIM 签名。

环境变量:QUARKUS_MAILER_DKIM_ENABLED

显示更多

布尔值

false

quarkus.mailer."mailer-name".dkim.private-key

配置用于签署电子邮件的 PKCS#8 格式私钥。

环境变量:QUARKUS_MAILER_DKIM_PRIVATE_KEY

显示更多

字符串

quarkus.mailer."mailer-name".dkim.private-key-path

配置 PKCS#8 格式私钥文件路径。

环境变量:QUARKUS_MAILER_DKIM_PRIVATE_KEY_PATH

显示更多

字符串

quarkus.mailer."mailer-name".dkim.auid

配置代理或用户标识符 (AUID)。

环境变量:QUARKUS_MAILER_DKIM_AUID

显示更多

字符串

quarkus.mailer."mailer-name".dkim.selector

配置用于查询公钥的选择器。

环境变量:QUARKUS_MAILER_DKIM_SELECTOR

显示更多

字符串

quarkus.mailer."mailer-name".dkim.sdid

配置签名域标识符 (SDID)。

环境变量:QUARKUS_MAILER_DKIM_SDID

显示更多

字符串

quarkus.mailer."mailer-name".dkim.header-canon-algo

配置已签名标头的规范化算法。

环境变量:QUARKUS_MAILER_DKIM_HEADER_CANON_ALGO

显示更多

simplerelaxed

quarkus.mailer."mailer-name".dkim.body-canon-algo

配置邮件正文的规范化算法。

环境变量:QUARKUS_MAILER_DKIM_BODY_CANON_ALGO

显示更多

simplerelaxed

quarkus.mailer."mailer-name".dkim.body-limit

配置要签名的正文限制。必须大于零。

环境变量:QUARKUS_MAILER_DKIM_BODY_LIMIT

显示更多

整数

quarkus.mailer."mailer-name".dkim.signature-timestamp

配置是否启用或禁用签名时间戳。

环境变量:QUARKUS_MAILER_DKIM_SIGNATURE_TIMESTAMP

显示更多

布尔值

quarkus.mailer."mailer-name".dkim.expire-time

配置签名将在多少秒后过期。必须大于零。

环境变量:QUARKUS_MAILER_DKIM_EXPIRE_TIME

显示更多

long

quarkus.mailer."mailer-name".dkim.signed-headers

配置 DKIM 中已签名的标头,以逗号分隔。列表中的顺序很重要。

环境变量:QUARKUS_MAILER_DKIM_SIGNED_HEADERS

显示更多

字符串列表

quarkus.mailer."mailer-name".login

设置连接的登录模式。可以是 NONEDISABLEDREQUIREDXOAUTH2

  • NONE 表示如果服务器支持并且设置了登录凭据,将尝试登录

  • DISABLED 表示不会尝试登录

  • REQUIRED 表示如果服务器支持,将尝试登录,否则发送操作将失败

  • XOAUTH2 表示将尝试使用 Google Gmail Oauth2 令牌登录

环境变量:QUARKUS_MAILER_LOGIN

显示更多

字符串

NONE

quarkus.mailer."mailer-name".auth-methods

设置允许的身份验证方法。仅当服务器支持这些方法时才会使用它们。如果未设置,则可以使用所有支持的方法。

列表以空格分隔的列表给出,例如 DIGEST-MD5 CRAM-SHA256 CRAM-SHA1 CRAM-MD5 PLAIN LOGIN

环境变量:QUARKUS_MAILER_AUTH_METHODS

显示更多

字符串

quarkus.mailer."mailer-name".key-store-password

设置信任存储密码(如果有)。

环境变量:QUARKUS_MAILER_KEY_STORE_PASSWORD

显示更多

字符串

quarkus.mailer."mailer-name".truststore.password

设置信任存储密码(如果有)。请注意,密码仅用于 JKS 和 PCK#12 信任存储。

环境变量:QUARKUS_MAILER_TRUSTSTORE_PASSWORD

显示更多

字符串

quarkus.mailer."mailer-name".truststore.paths

设置信任存储文件的位置。如果您使用 JKS 或 PCK#12,则只允许一个路径。如果您使用 PEM 文件,则可以指定多个路径。

相对路径是相对于应用程序工作目录的。

环境变量:QUARKUS_MAILER_TRUSTSTORE_PATHS

显示更多

字符串列表

quarkus.mailer."mailer-name".truststore.type

设置信任存储类型。默认情况下,它会从文件名扩展名中猜测类型。例如,truststore.pem 将被视为 PEM 文件,而 truststore.jks 将被视为 JKS 文件。truststore.p12truststore.pfx 都将被视为 PKCS#12 文件。接受的值为:JKSPEMPKCS

环境变量:QUARKUS_MAILER_TRUSTSTORE_TYPE

显示更多

字符串

quarkus.mailer."mailer-name".multi-part-only

即使邮件没有附件,是否应始终将邮件作为多部分邮件发送。设置为 true 时,即使对于没有附件的简单邮件,邮件消息也会编码为多部分邮件。

环境变量:QUARKUS_MAILER_MULTI_PART_ONLY

显示更多

布尔值

false

quarkus.mailer."mailer-name".allow-rcpt-errors

设置发送是否允许收件人错误。如果设置为 true,则邮件将发送给服务器接受的收件人(如果有)。

环境变量:QUARKUS_MAILER_ALLOW_RCPT_ERRORS

显示更多

布尔值

false

quarkus.mailer."mailer-name".pipelining

如果 SMTP 服务器支持,则启用或禁用流水线功能。

环境变量:QUARKUS_MAILER_PIPELINING

显示更多

布尔值

true

quarkus.mailer."mailer-name".pool-cleaner-period

设置连接池清理器周期。零会禁用过期检查,并且连接将保留在池中,直到它们关闭。

环境变量:QUARKUS_MAILER_POOL_CLEANER_PERIOD

显示更多

Duration 

PT1S

quarkus.mailer."mailer-name".keep-alive-timeout

设置 SMTP 连接的保持活动超时。此值确定连接在池中保持未使用的时长,然后被逐出和关闭。超时 0 表示没有超时。

环境变量:QUARKUS_MAILER_KEEP_ALIVE_TIMEOUT

显示更多

Duration 

PT300S

quarkus.mailer."mailer-name".ntlm.workstation

设置 NTLM 身份验证中使用的工作站。

环境变量:QUARKUS_MAILER_NTLM_WORKSTATION

显示更多

字符串

quarkus.mailer."mailer-name".ntlm.domain

设置 NTLM 身份验证中使用的域。

环境变量:QUARKUS_MAILER_NTLM_DOMAIN

显示更多

字符串

quarkus.mailer."mailer-name".approved-recipients

允许仅将电子邮件发送给这些收件人。

批准的收件人会被编译成 Pattern,并且必须是有效的正则表达式。创建的 Pattern 不区分大小写,因为电子邮件不区分大小写。提供的模式在编译之前会被修剪。

环境变量:QUARKUS_MAILER_APPROVED_RECIPIENTS

显示更多

Pattern列表

quarkus.mailer."mailer-name".log-rejected-recipients

将拒绝的收件人记录为警告。

如果为 false,则拒绝的收件人将以 DEBUG 级别记录。

环境变量:QUARKUS_MAILER_LOG_REJECTED_RECIPIENTS

显示更多

布尔值

false

quarkus.mailer."mailer-name".log-invalid-recipients

将无效的收件人记录为警告。

如果为 false,则不会记录无效的收件人,并且抛出的异常不会包含无效的电子邮件地址。

环境变量:QUARKUS_MAILER_LOG_INVALID_RECIPIENTS

显示更多

布尔值

false

关于 Duration 格式

要写入持续时间值,请使用标准的 java.time.Duration 格式。有关更多信息,请参阅 Duration#parse() Java API 文档

您还可以使用简化的格式,以数字开头

  • 如果该值仅为一个数字,则表示以秒为单位的时间。

  • 如果该值是一个数字后跟 ms,则表示以毫秒为单位的时间。

在其他情况下,简化格式将被转换为 java.time.Duration 格式以进行解析

  • 如果该值是一个数字后跟 hms,则在其前面加上 PT

  • 如果该值是一个数字后跟 d,则在其前面加上 P

相关内容

在相同的扩展上

关于相同主题