Skip to content

Instantly share code, notes, and snippets.

@notFloran
Created April 4, 2018 19:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save notFloran/2959d3f6d06c33da3fce3358da206321 to your computer and use it in GitHub Desktop.
Save notFloran/2959d3f6d06c33da3fce3358da206321 to your computer and use it in GitHub Desktop.
Log all emails sent with Swiftmailer
<?php
namespace App\Swiftmailer;
use Psr\Log\LoggerInterface;
use Swift_Events_SendEvent;
use Swift_Events_SendListener;
class LoggerPlugin implements Swift_Events_SendListener
{
/**
* @var LoggerInterface
*/
protected $logger;
/**
* @var array
*/
protected $alreadySend = [];
/**
* @param LoggerInterface $logger
*/
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
/**
* @param Swift_Events_SendEvent $evt
*/
public function beforeSendPerformed(Swift_Events_SendEvent $evt)
{
}
/**
* @param Swift_Events_SendEvent $evt
*/
public function sendPerformed(Swift_Events_SendEvent $evt)
{
$messageId = $evt->getMessage()->getId();
$context = [
'message_id' => $messageId,
'subject' => $evt->getMessage()->getSubject(),
'from' => $evt->getMessage()->getFrom(),
'to' => $evt->getMessage()->getTo(),
];
if ($evt->getTransport() instanceof \Swift_Transport_SpoolTransport) {
$this->logger->info('An email has been added to spool', $context);
} else {
$this->logger->info('An email has been sent', $context);
}
$this->alreadySend[$messageId] = true;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment