По разным причинам я хочу / нужно регистрировать все электронные письма, отправленные через мой веб-сайт, который работает на Symfony 5.
У меня есть подписчик, который создает объект типа EmailLogEntry, когда MessageEvent класс создан (по крайней мере, из этого я понимаю (MessageEvent::class
) - поправьте меня, если я ошибаюсь). Я также использую этого подписчика для заполнения отсутствующих адресов электронной почты системным адресом по умолчанию.
Теперь, после отправки электронного письма, я хотел бы настроить свою сущность и позвонить $email->setSent(true);
, но я не могу понять, как подписаться на событие, которое пытается отправить по электронной почте. И для повторного использования кода я не хочу делать это в Сервисах (да, это несколько, так как есть несколько источников, которые генерируют почту), где я на самом деле называю $this->mailer->send($email);
.
Мои вопросы сейчас:
- Может кто-нибудь сказать мне, как я могу подписаться на событие отправки Mailers?
- Как, вообще, я могу выяснить, что события, на которые я могу подписаться? События ядра перечислены в документации, но как насчет всех других событий, которые запускаются?
Кстати, мой код подписчика на данный момент:
class SendMailSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return [
MessageEvent::class => [
['onMessage', 255],
['logMessage', 0],
],
];
}
public function logMessage(MessageEvent $event) {
$email = new EmailLogEntry();
[...]
}
}
Спасибо.