<?php
namespace App\EventSubscriber;
use App\Event\MailEvent;
use Psr\Log\LoggerInterface;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
use Symfony\Component\Mailer\MailerInterface;
class MailSubscriber implements EventSubscriberInterface
{
private MailerInterface $mailer;
private LoggerInterface $logger;
public function __construct(MailerInterface $mailer, LoggerInterface $logger)
{
$this->mailer = $mailer;
$this->logger = $logger;
}
public static function getSubscribedEvents(): array
{
return [
MailEvent::class => ['onCreateCompanyAction', 10]
];
}
public function onCreateCompanyAction(MailEvent $event): bool
{
$email = (new TemplatedEmail())
->from($event->getFrom())
->to($event->getTo())
->subject($event->getSubject())
->htmlTemplate($event->getTemplateRoot())
->context($event->getContext());
try {
$this->mailer->send($email);
return true;
} catch (TransportExceptionInterface $e) {
$this->logger->error(
'End with error for send email to ' . $event->getTo() . ' with subject : ' . $event->getSubject(),
[
'exception' => $e->getMessage()
]
);
return false;
}
}
}