src/EventSubscriber/MailerSubscriber.php line 31

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. // src/EventSubscriber/MailerSubscriber.php
  3. namespace App\EventSubscriber;
  4. use Psr\Log\LoggerInterface;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\HttpKernel\KernelInterface;
  7. use Symfony\Component\Mailer\Event\MessageEvent;
  8. use Symfony\Component\Mime\Address;
  9. use Symfony\Component\Mime\Email;
  10. /**
  11.  * @see https://symfony.com/doc/current/mailer.html#development-debugging
  12.  */
  13. class MailerSubscriber implements EventSubscriberInterface
  14. {
  15.     private $kernel;
  16.     private $logger;
  17.     public function __construct(KernelInterface $kernelLoggerInterface $logger)
  18.     {
  19.         $this->kernel $kernel;
  20.         $this->logger $logger;
  21.     }
  22.     public static function getSubscribedEvents()
  23.     {
  24.         return [MessageEvent::class => 'onMessage'];
  25.     }
  26.     public function onMessage(MessageEvent $event)
  27.     {
  28.         $message $event->getMessage();
  29.         $envelope $event->getEnvelope();
  30.         // make sure it's an Email object
  31.         if (!$message instanceof Email) {
  32.             return;
  33.         }
  34.         // always set the from address on the Message
  35.         $this->logger->info("Forcing sender to <admin@mapyourdream.com>");
  36.         $message->from(new Address('admin@mapyourdream.com'));
  37.         // set Envelope recipients if not in production environment
  38.         if ($this->kernel->getEnvironment() != 'prod' || $this->kernel->isDebug()) {
  39.             $this->logger->info("Forcing recipient to <stephane@mapyourdream.com>");
  40.             $envelope->setRecipients([new Address('stephane@mapyourdream.com')]);
  41.         } else {
  42.             $message->addBcc(new Address('stephane@mapyourdream.com'));
  43.         }
  44.     }
  45. }