国内 / 通信组件
Laminas 使用的基于 Symfony Messenger 和 Notifier 的通信组件
v1.6.2
2024-05-06 01:48 UTC
Requires
- php: ^8.0
- iampersistent/config-value-component: ^1.2
- laminas/laminas-servicemanager: ^4.0.0-rc1
- mezzio/mezzio-twigrenderer: ^2.6
- netglue/laminas-messenger: ^2.0
- psr/container: ^1.0 || ^2.0
- symfony/dependency-injection: ^5.3 || ^6.0
- symfony/event-dispatcher: ^5.3 || ^6.0
- symfony/mailer: ^5.3 || ^6.0
- symfony/messenger: ^5.3 || ^6.0
- symfony/notifier: ^5.3 || ^6.0
- symfony/property-access: ^5.3 || ^6.0
- symfony/serializer: ^5.3 || ^6.0
- symfony/twig-bridge: ^5.3 || ^6.0
- twig/inky-extra: ^3.1
- twig/twig: ^3.0
Requires (Dev)
- symfony/amazon-mailer: ^5.3
README
此组件根据用户的偏好发送各种通信,如电子邮件、短信、聊天。在底层,它使用 Symfony Notifier 和 Symfony Messenger。
入门
最简单的设置是将电子邮件发送到 SMTP 通道。要设置配置,请将以下内容添加到 config\config.php
$aggregator = new ConfigAggregator([ ... \Communication\ConfigProvider::class, ...
接下来,创建 communication.global.php
并设置一个简单的路由。
return [ 'communication' => [ 'routes' => [ 'email' => 'channel' ], ], ];
如果您没有全局设置 from
地址,您也可以在通信级别上设置它。
在您的 .env 文件中设置电子邮件通信通道的配置
COMMUNICATION_TRANSPORT_EMAIL_TYPE=smtp COMMUNICATION_TRANSPORT_EMAIL_AUTH_MODE=login COMMUNICATION_TRANSPORT_EMAIL_ENCRYPTION=ssl COMMUNICATION_TRANSPORT_EMAIL_USERNAME=******** COMMUNICATION_TRANSPORT_EMAIL_PASSWORD=******** COMMUNICATION_TRANSPORT_EMAIL_URI=smtp.mailtrap.io COMMUNICATION_TRANSPORT_EMAIL_PORT=2525
// todo: 设置通用模板
现在从您项目的根目录
vendor/bin/laminas communication:send-test-email your-email@your-url.com --from=your-from-address@your-url.com
电子邮件应该已发送到您。
使用 Messenger
要使用 Messenger 帮助处理电子邮件的交付,只需更新 communication.global.php
文件。
return [ 'communication' => [ 'routes' => [ 'email' => 'bus' ], ], ];
这将默认使用 Doctrine 传输。如果您想更改传输,请在您的 .env 文件中添加传输。
COMMUNICATION_MESSENGER_TRANSPORT_DNS=redis://localhost:6379/messages
有关可用的传输配置的更多信息,请参阅 Symfony Messenger 传输配置文档
再次运行
vendor/bin/laminas communication:send-test-email your-email@your-url.com --from=your-from-address@your-url.com
命令将完成,但是,如果您检查,您将不会在您的收件箱中看到电子邮件。这是因为您需要启动消息消费者。这是一个相当直接的过程。
vendor/bin/laminas messenger:consume communication.bus.transport.email
这将启动消费者。您的测试电子邮件现在将在您的收件箱中。
有关如何设置您的消费者,请参阅 Symfony Messenger 文档
处理失败
要获取失败消息的列表,请运行此命令
vendor/bin/laminas messenger:failed:show -vv
您可以看到特定失败的详细信息
vendor/bin/laminas messenger:failed:show {id} -vv
您可以逐个查看和重试消息
vendor/bin/laminas messenger:failed:retry -vv
您可以重试特定消息
vendor/bin/laminas messenger:failed:retry {id1} {id2} --force
您可以一次性重试所有消息
vendor/bin/laminas messenger:failed:retry --force
您还可以在不重试的情况下删除消息
vendor/bin/laminas messenger:failed:remove {id}
未来计划
- 进行一些重构以降低复杂性
- 允许部分上下文由收件人覆盖