netglue / laminas-postmark-transport

使用 Postmark API 为使用 Laminas 组件的电子邮件应用程序提供的邮件传输

1.4.0 2024-01-05 00:25 UTC

README

PHPUnit Test Suite Type Coverage

简介

此库为与 Laminas\MailPostmark 事务性电子邮件服务 一起使用提供邮件传输。它还提供了电子邮件消息验证器,以帮助确保通过 Postmark 发送的邮件是可接受的 - 我对检查发件人地址是否列在您的账户上已验证的 Postmark 域名或配置的发送者签名中的验证器非常满意。

安装

composer require netglue/laminas-postmark-transport

如果您在使用 Expressive/Mezzio 构建的应用程序中,则配置提供程序应通过 Laminas 组件安装程序 在安装期间自动注入。如果您使用 Laminas MVC,则可能需要采取额外步骤来启动默认配置。

其中一个依赖项是一个小型的包 netglue/psr-container-postmark - 这是用于配置官方 Postmark API 客户端的,因此您可以在该库的 README 中找到有关配置账户和服务器的令牌的更多信息。

用法

默认情况下,假设您使用 Laminas Service Manager 作为您的 DIC,您将能够通过以下方式检索您的传输:

$transport = $container->get(\Laminas\Mail\Transport\TransportInterface::class);
// or
$transport = $container->get(\Netglue\Mail\Postmark\Transport\PostmarkTransport::class);

与所有邮件传输一样,您只需与之交互以发送一个 Laminas\Mail\Message

$message = new Message();
// ... Set To, From, Subject etc...
$transport->send($message);

有关使用 Laminas 组件发送邮件的特定文档,请参阅此处...

将此库组合起来的主要原因是在将消息发送到 API 之前验证消息,以展示常见的错误,例如无效的发件人地址、过多的收件人等。传输在其构造函数参数中接受一个验证器,该验证器用于强制实施对使用 Postmark 发送邮件施加的约束。

有一个默认的验证器链,您可以根据这些约束进行检查,还有一个默认不使用的已发布的 FromAddressValidator。这个验证器最初没有启用的原因是它会调用账户端点以检索配置的发送域和电子邮件地址,然后检查消息的 From 标头是否在已验证的发送者中。

因此,要使用此验证器,您需要:

  • 配置账户 API 的访问令牌
  • 将不同的验证器链注入传输
  • 提供可以从容器中检索的 PSR-6 兼容缓存名称

希望以下配置可以阐明所需...

'postmark' => [
    'server_token' => 'Your "server" token for sending mail',
    'account_token' => 'Token for the account API', // Required when using the sender validator
    'message_validator' => \MyApp\Validator\CustomMessageValidationChain::class,
    'cache_service' => \MyApp\PsrCacheItemPool::class, // The cache to use for the domain and sender signatures list.
],

最后,此库还依赖于 netglue/laminas-mail-utils,它主要是用于邮件消息和消息行为的更通用的验证器集合,旨在与其他供应商(如 SparkPost、MailGun 等)一起使用。如果您构建自定义验证器链,其中有许多验证器可能会有所帮助。