我目前在使用\ Swift_Mailer到Symfony MessageHandlerInterface中遇到问题。在此类的__invoke方法中,我想使用Swift_Mailer发送电子邮件。
/**
* @param MailMessage $mailMessage
*/
public function __invoke(MailMessage $mailMessage)
{
try {
$message = (new \Swift_Message('You Got Mail!'))
->setFrom('no-reply@example.be' , 'No reply')
->setTo('development@example.be')
->setBody(
'hello world',
'text/plain'
)
;
$successfulRecipientsCount = $this->mailer->send($message, $failedRecipients);
if ($successfulRecipientsCount < 1 || count($failedRecipients) > 0) {
throw new \Exception('error sending mail');
}
} catch (\Exception $e) {
$this->logger->error( $e->getMessage());
}
}
但是当我要使用此消息时,邮件发送器从不将邮件发送到目的地。 当我将此代码片段用于控制器时,它就可以正常工作。因此,我的配置中的mail参数没有问题。
我知道Symfony的控制器会调度kernel.terminate事件,而Swift_Mailer会利用此事件来发送电子邮件。
如何从Symfony的MessengerHandlerInterface的魔术方法__invoke中调度kernel.terminate事件?