Messenger __invoke方法中的Swiftmailer不发送邮件

时间:2019-01-07 15:20:09

标签: php symfony4 swiftmailer

我目前在使用\ 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事件?

0 个答案:

没有答案