stof / stampie-extra
Event-based plugin for stampie/stampie
Requires
- php: ^7.2 || ^8.0
- stampie/stampie: ^1.0
- symfony/event-dispatcher: ^2.3 || ^3.0 || ^4.0 || ^5.0
Requires (Dev)
- php-http/mock-client: ^1.0
- phpunit/phpunit: ^8.5.20 || ^9.5.9
- psr/log: ^1.0
- symfony/phpunit-bridge: ^5.3
Suggests
- psr/log: to log sent emails to a LoggerInterface
Conflicts
This package is not auto-updated.
Last update: 2022-02-01 12:21:03 UTC
README
StampieExtra provides an event-based extension point for Stampie. It uses the Symfony EventDispatcher component.
Usage
The Stampie Extra mailer wraps your Stampie mailer to provides extension points in the sending process.
<?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);
The mailer will then dispatch the stampie.pre_send
event before sending
the message, allowing you to apply some changes.
Built-in listeners
ImpersonateListener
The ImpersonateListener allows you to replace the recipient of the mail during
development to send all messages to a single email address. It will add a
X-Stampie-To
header containing the original recipient.
<?php $dispatcher->addEventSubscriber(new Stampie\Extra\EventListener\ImpersonateListener('stampie@example.com'));
LoggerListener
The LoggerListener allows you to log sent emails. It expects a logger implementing the 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 also provides a SpoolMailer storing the messages in memory and sending them when flushing the queue.
<?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();
Testing
Stampie Extra is Continuous Integration tested with Travis and aims for a high coverage percentage.