2015-10-30 2 views
1

Я пытаюсь настроить команду на отправку предупреждающих сообщений, но я не могу заставить 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 ничего не добавлено (так, конечно, я не получаю письмо).

+1

Есть ли у вас другая конфигурация для электронной почты в среде dev и prod? Команды запускаются в среде dev по умолчанию, поэтому, если у вас разные конфигурации, вам может потребоваться запустить вашу команду в среде prod (с помощью '--env = prod') –

+0

Прекрасное спасибо. Моя среда настроена несколько иначе, но это и является причиной моей проблемы. – mike

+1

Я добавил свой комментарий в качестве ответа, чтобы вы его приняли. Это может помочь другим пользователям с аналогичной проблемой –

ответ

1

Команда выполняется в dev среде по умолчанию, так что если у вас есть различные конфиги для dev и prod среды, вам нужно будет запустить команду в prod среде (с --env=prod)

Смежные вопросы