stampie / extra
基于事件的 stampie/stampie 插件
v1.3.0
2022-05-03 22:03 UTC
Requires
- php: ^7.2 || ^8.0
- stampie/stampie: ^1.0
- symfony/event-dispatcher: ^4.4 || ^5.4 || ^6.0
- symfony/event-dispatcher-contracts: ^1.1 || ^2.5 || ^3.0
Requires (Dev)
- php-http/mock-client: ^1.0
- phpunit/phpunit: ^8.5.20 || ^9.5.9
- psr/log: ^1.0 || ^2.0 || ^3.0
- symfony/error-handler: ^4.4 || ^5.4 || ^6.0
- symfony/phpunit-bridge: ^5.4 || ^6.0
Suggests
- psr/log: to log sent emails to a LoggerInterface
Conflicts
This package is auto-updated.
Last update: 2024-08-30 01:11:36 UTC
README
StampieExtra 为 Stampie 提供了一个基于事件的扩展点。它使用 Symfony EventDispatcher 组件。
用法
Stampie Extra 邮件发送器封装了 Stampie 邮件发送器,在发送过程中提供了扩展点。
<?php // include the Composer autoloading require 'vendor/autoload.php'; $httpClient = new Http\Adapter\Guzzle6\Client(); $innerMailer = new Stampie\Mailer\SendGrid($httpClient, 'username:password'); $dispatcher = new Symfony\Component\EventDispatcher\EventDispatcher(); $mailer = new Stampie\Extra\Mailer($innerMailer, $dispatcher); $message = // Create your Stampie message $mailer->send($message);
发送消息之前,邮件发送器将派发 stampie.pre_send
事件,允许您进行一些更改。
内置监听器
ImpersonateListener
ImpersonateListener 允许您在开发期间替换邮件的收件人,将所有消息发送到单个电子邮件地址。它将添加一个包含原始收件人的 X-Stampie-To
标头。
<?php $dispatcher->addEventSubscriber(new Stampie\Extra\EventListener\ImpersonateListener('stampie@example.com'));
LoggerListener
LoggerListener 允许您记录发送的电子邮件。它期望一个实现 PSR-3 LoggerInterface 的记录器。
<?php // create a listener and configure it $logger = new Monolog\Logger('stampie'); // ... $dispatcher->addEventSubscriber(new Stampie\Extra\EventListener\LoggerListener($logger));
SpoolMailer
Stampie Extra 还提供了一种 SpoolMailer,将消息存储在内存中,并在刷新队列时发送它们。
<?php $mailer = // Create your mailer... $spoolMailer = new Stampie\Extra\SpoolMailer($mailer); $message = // Create your Stampie message... $spoolMailer->send($message); // Do some logic, for instance flushing the response to the user // Flush the queue, sending the message with the inner mailer $spoolMailer->flushSpool();