我无法让SwiftMailer发送Symfony2命令

时间:2015-10-30 01:05:10

标签: symfony swiftmailer

我试图设置一个命令来发送警告电子邮件,但我无法让SwiftMailer实际发送它们。

我读了一些关于刷新后台处理程序的帖子,但我仍然没有看到发送到Postfix的电子邮件。

电子邮件在控制器中工作,我收到它们。所以我知道Postfix本身正在工作,SwiftMailer可以从Controller工作。

这是我的执行功能

protected function execute(InputInterface $input, OutputInterface $output)
{
    $container = $this->getContainer();
    $entityManager = $container->get('doctrine')->getManager();
    $mailer = $container->get('mailer');
    $transport = $container->get('swiftmailer.transport.real');


    $things = $container->get('mike.stuff.service')->getThings();
    foreach ($things as $thing) {

            $recipients = array($thing->getPerson()->getEmail() => $thing->getPerson()->getName());

            $message = sprintf('Hello %s'.PHP_EOL.PHP_EOL.'This is an alert regarding %s',
                    $thing->getPerson()->getName(),
                    $thing->getReferenceNumber());

            $email = \Swift_Message::newInstance()
                ->setSubject('Alert')
                ->setFrom('noreply@mydomain.com')
                ->setTo($recipients)
                ->setBody($message);
            $mailer->send($email);
        }
    }

    // Flush the mailer transport
    $spool = $mailer->getTransport()->getSpool();
    $sent = $spool->flushQueue($transport);

    echo 'I sent ' . $sent;
}

当我运行命令时,输出是"我发送了1",所以看起来它已经工作了。但是/var/log/mail.log没有添加任何内容(所以当然我没有收到电子邮件)。

1 个答案:

答案 0 :(得分:1)

默认情况下,命令在dev环境中运行,因此如果您对devprod环境有不同的配置,则需要在{{1}中运行命令}环境(prod