我试图设置一个命令来发送警告电子邮件,但我无法让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没有添加任何内容(所以当然我没有收到电子邮件)。
答案 0 :(得分:1)
默认情况下,命令在dev
环境中运行,因此如果您对dev
和prod
环境有不同的配置,则需要在{{1}中运行命令}环境(prod
)