vendor/appaydin/pd-activity/Listener/MailerListener.php line 32

Open in your IDE?
  1. <?php
  2. /**
  3.  * This file is part of the pd-admin pd-activity package.
  4.  *
  5.  * @package     pd-activity
  6.  * @license     LICENSE
  7.  * @author      Ramazan APAYDIN <apaydin541@gmail.com>
  8.  * @link        https://github.com/appaydin/pd-activity
  9.  */
  10. namespace Pd\ActivityBundle\Listener;
  11. use Pd\ActivityBundle\Message\MailLog;
  12. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  13. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  14. use Symfony\Component\Mailer\Event\MessageEvent;
  15. use Symfony\Component\Messenger\MessageBusInterface;
  16. use Symfony\Component\Mime\Email;
  17. class MailerListener implements EventSubscriberInterface
  18. {
  19.     public function __construct(
  20.         private ParameterBagInterface $bag,
  21.         private MessageBusInterface $bus
  22.     ) {
  23.     }
  24.     /**
  25.      * Listen Send Mail.
  26.      */
  27.     public function onSendMail(MessageEvent $event): void
  28.     {
  29.         if (!$this->bag->get('pd_activity.log_mailer') || !$event->isQueued()) {
  30.             return;
  31.         }
  32.         /** @var Email $email */
  33.         $email $event->getMessage();
  34.         if ($event->getMessage() instanceof Email) {
  35.             $this->bus->dispatch(new MailLog(
  36.                 $email->getTo(),
  37.                 $email->getFrom(),
  38.                 $email->getCc(),
  39.                 $email->getBcc(),
  40.                 $email->getSubject(),
  41.                 $email->getHtmlBody() ?? $email->getTextBody()
  42.             ));
  43.         }
  44.     }
  45.     public static function getSubscribedEvents(): array
  46.     {
  47.         return [MessageEvent::class => 'onSendMail'];
  48.     }
  49. }