src/EventSubscriber/MailSubscriber.php line 30

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Event\MailEvent;
  4. use Psr\Log\LoggerInterface;
  5. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
  8. use Symfony\Component\Mailer\MailerInterface;
  9. class MailSubscriber implements EventSubscriberInterface
  10. {
  11.     private MailerInterface $mailer;
  12.     private LoggerInterface $logger;
  13.     public function __construct(MailerInterface $mailerLoggerInterface $logger)
  14.     {
  15.         $this->mailer $mailer;
  16.         $this->logger $logger;
  17.     }
  18.     public static function getSubscribedEvents(): array
  19.     {
  20.         return [
  21.             MailEvent::class => ['onCreateCompanyAction'10]
  22.         ];
  23.     }
  24.     public function onCreateCompanyAction(MailEvent $event): bool
  25.     {
  26.         $email = (new TemplatedEmail())
  27.             ->from($event->getFrom())
  28.             ->to($event->getTo())
  29.             ->subject($event->getSubject())
  30.             ->htmlTemplate($event->getTemplateRoot())
  31.             ->context($event->getContext());
  32.         try {
  33.             $this->mailer->send($email);
  34.             return true;
  35.         } catch (TransportExceptionInterface $e) {
  36.             $this->logger->error(
  37.                 'End with error for send email to ' $event->getTo() . ' with subject : ' $event->getSubject(),
  38.                 [
  39.                     'exception' => $e->getMessage()
  40.                 ]
  41.             );
  42.             return false;
  43.         }
  44.     }
  45. }