邮件发送器参考指南
本指南是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 实现之上的。 |
弃用
|
要发送简单的电子邮件,请按如下步骤操作
// 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.withText
和 Mail.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
注释一个类,并且该类的所有返回 MailTemplate
的 static 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.html 和 src/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.html 和 src/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.html 和 src/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
属性配置为 REQUIRED
或 OPTIONAL
,并将 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.paths
和 quarkus.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 设置为 REQUIRED 或 OPTIONAL 。 |
配置 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
当
您还可以使用已弃用的 |
多个 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 配置。 |
使用 使用 |
适用于常用电子邮件服务的 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 需要 |
AWS SES - 简单电子邮件服务
先决条件
-
SES 身份检查,按照流程设置 DKIM 验证
-
从 https://us-east-1.console.aws.amazon.com/ses/home 检索 SMTP 端点,示例:
email-smtp.us-east-1.amazonaws.com
-
如果需要,创建 SMTP 凭据
-
如果您在沙盒中,还要验证收件人(使用电子邮件验证)
配置
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 服务器发送电子邮件。
配置
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
配置
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
先决条件
-
启用对您的 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 中的数据缓存到临时文件。它尝试在发送电子邮件后删除它。 环境变量: 显示更多 |
布尔值 |
|
类型 |
默认 |
|
设置默认的 环境变量: 显示更多 |
字符串 |
|
启用模拟模式。启用后,邮件不会发送,而是存储在内存邮箱中。电子邮件的内容也会打印在控制台上。 在 PROD 上默认禁用,在 DEV 和 TEST 模式下默认启用。 环境变量: 显示更多 |
布尔值 |
|
设置默认的退回电子邮件地址。退回的电子邮件或退回邮件是指被邮件服务器拒绝的电子邮件消息。 环境变量: 显示更多 |
字符串 |
|
字符串 |
|
|
SMTP 端口。默认值取决于配置。当 请注意,端口 465 可能会被 SMTP 服务器使用,但是,IANA 已将一项新服务重新分配给此端口,并且不应再将其用于 SMTP 通信。 环境变量: 显示更多 |
整数 |
|
设置连接到 SMTP 服务器的用户名。 环境变量: 显示更多 |
字符串 |
|
设置连接到 SMTP 服务器的密码。 环境变量: 显示更多 |
字符串 |
|
要使用的 TLS 配置的名称。 如果配置了名称,它将使用来自 如果未设置 TLS 配置名称,则将使用特定的 TLS 配置(来自 默认情况下,不使用默认 TLS 配置。 环境变量: 显示更多 |
字符串 |
|
连接是否应使用 TLS 进行保护。 SMTP 允许建立带有或不带有 TLS 的连接。当建立带有 TLS 的连接时,连接是安全和加密的。当建立不带有 TLS 的连接时,可以使用 STARTTLS 命令稍后对其进行保护和加密。在这种情况下,连接最初是不安全和未加密的。要配置这种情况,请将此属性设置为 环境变量: 显示更多 |
布尔值 |
|
设置到邮件服务器的最大打开连接数。 环境变量: 显示更多 |
整数 |
|
设置用于 HELO/EHLO 和 Message-ID 的主机名。 环境变量: 显示更多 |
字符串 |
|
设置是否启用连接池。如果禁用连接池,则仍然会强制执行最大套接字数。 环境变量: 显示更多 |
布尔值 |
|
禁用 ESMTP。 RFC-1869 规定客户端应始终尝试 环境变量: 显示更多 |
布尔值 |
|
设置连接的 TLS 安全模式。可以是 环境变量: 显示更多 |
字符串 |
|
启用 DKIM 签名。 环境变量: 显示更多 |
布尔值 |
|
配置用于签署电子邮件的 PKCS#8 格式私钥。 环境变量: 显示更多 |
字符串 |
|
配置 PKCS#8 格式私钥文件路径。 环境变量: 显示更多 |
字符串 |
|
配置代理或用户标识符 (AUID)。 环境变量: 显示更多 |
字符串 |
|
配置用于查询公钥的选择器。 环境变量: 显示更多 |
字符串 |
|
配置签名域标识符 (SDID)。 环境变量: 显示更多 |
字符串 |
|
配置已签名标头的规范化算法。 环境变量: 显示更多 |
|
|
配置邮件正文的规范化算法。 环境变量: 显示更多 |
|
|
配置要签名的正文限制。必须大于零。 环境变量: 显示更多 |
整数 |
|
配置是否启用或禁用签名时间戳。 环境变量: 显示更多 |
布尔值 |
|
配置签名将在多少秒后过期。必须大于零。 环境变量: 显示更多 |
long |
|
配置 DKIM 中已签名的标头,以逗号分隔。列表中的顺序很重要。 环境变量: 显示更多 |
字符串列表 |
|
设置连接的登录模式。可以是
环境变量: 显示更多 |
字符串 |
|
设置允许的身份验证方法。仅当服务器支持这些方法时才会使用它们。如果未设置,则可以使用所有支持的方法。 列表以空格分隔的列表给出,例如 环境变量: 显示更多 |
字符串 |
|
设置信任存储密码(如果有)。 环境变量: 显示更多 |
字符串 |
|
设置信任存储密码(如果有)。请注意,密码仅用于 JKS 和 PCK#12 信任存储。 环境变量: 显示更多 |
字符串 |
|
设置信任存储文件的位置。如果您使用 JKS 或 PCK#12,则只允许一个路径。如果您使用 PEM 文件,则可以指定多个路径。 相对路径是相对于应用程序工作目录的。 环境变量: 显示更多 |
字符串列表 |
|
设置信任存储类型。默认情况下,它会从文件名扩展名中猜测类型。例如, 环境变量: 显示更多 |
字符串 |
|
即使邮件没有附件,是否应始终将邮件作为多部分邮件发送。设置为 true 时,即使对于没有附件的简单邮件,邮件消息也会编码为多部分邮件。 环境变量: 显示更多 |
布尔值 |
|
设置发送是否允许收件人错误。如果设置为 true,则邮件将发送给服务器接受的收件人(如果有)。 环境变量: 显示更多 |
布尔值 |
|
如果 SMTP 服务器支持,则启用或禁用流水线功能。 环境变量: 显示更多 |
布尔值 |
|
设置连接池清理器周期。零会禁用过期检查,并且连接将保留在池中,直到它们关闭。 环境变量: 显示更多 |
|
|
设置 SMTP 连接的保持活动超时。此值确定连接在池中保持未使用的时长,然后被逐出和关闭。超时 0 表示没有超时。 环境变量: 显示更多 |
|
|
设置 NTLM 身份验证中使用的工作站。 环境变量: 显示更多 |
字符串 |
|
设置 NTLM 身份验证中使用的域。 环境变量: 显示更多 |
字符串 |
|
允许仅将电子邮件发送给这些收件人。 批准的收件人会被编译成 环境变量: 显示更多 |
Pattern列表 |
|
将拒绝的收件人记录为警告。 如果为 false,则拒绝的收件人将以 DEBUG 级别记录。 环境变量: 显示更多 |
布尔值 |
|
将无效的收件人记录为警告。 如果为 false,则不会记录无效的收件人,并且抛出的异常不会包含无效的电子邮件地址。 环境变量: 显示更多 |
布尔值 |
|
关于 Duration 格式
要写入持续时间值,请使用标准的 您还可以使用简化的格式,以数字开头
在其他情况下,简化格式将被转换为
|