Я пытаюсь настроить команду на отправку предупреждающих сообщений, но я не могу заставить SwiftMailer отправлять их на самом деле.Я не могу получить SwiftMailer для отправки в команду Symfony2
Я прочитал несколько сообщений о очистке спулера, но я по-прежнему не вижу сообщений электронной почты, отправляемых в Postfix.
Письма работают в контроллере, и я получаю их. Поэтому я знаю, что сам Postfix работает, и что SwiftMailer работает с контроллером.
Это функция выполнения У меня есть
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('[email protected]')
->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 ничего не добавлено (так, конечно, я не получаю письмо).
Есть ли у вас другая конфигурация для электронной почты в среде dev и prod? Команды запускаются в среде dev по умолчанию, поэтому, если у вас разные конфигурации, вам может потребоваться запустить вашу команду в среде prod (с помощью '--env = prod') –
Прекрасное спасибо. Моя среда настроена несколько иначе, но это и является причиной моей проблемы. – mike
Я добавил свой комментарий в качестве ответа, чтобы вы его приняли. Это может помочь другим пользователям с аналогичной проблемой –