2013-11-15 2 views
0

Я разрабатываю одно приложение с symfony2 С одной стороны приложения я отправляю электронные письма, все в порядке с этим. Но теперь я создаю одну команду для запуска в crontab, но это не отправляет электронные письма. это моя команда: использование Doctrine \ ORM \ EntityManager; использование Symfony \ Component \ Templating \ EngineInterface;symfony2 email не отправлено командой

класс Отправитель { защищенный $ em; защищенная $ twig; защищенный $ mailer; public function __construct ($ em, \ Twig_Environment $ twig, \ Swift_Mailer $ mailer) { $ this-> em = $ em; $ this-> twig = $ twig; $ this-> mailer = $ mailer; }

public function runSender() { 
    $proj = $this->em->createQuery ... 
    $maillist = $this->em->createQuery ... 
$templateFile = "projectprojBundle:MailList:emailNew.html.twig"; 
$templateContent = $this->twig->loadTemplate($templateFile); 
$body = $templateContent->render(array('proj' => $proj)); 

    foreach ($maillist as $m) { 
    $message = \Swift_Message::newInstance()->setSubject('New projects') 
    ->setFrom('...')->setTo($m['email']) 
    ->setContentType('text/html') 
    ->setBody(trim($body)); 
    $this->mailer->send($message); 
    } } } 

все в порядке с запросами, я тестировал. , и если я могу отправить из других классов, почему я не могу здесь?

+0

Вы используете память катушки? Если да, то это проблема. См. Http://stackoverflow.com/questions/13122096/unable-to-send-e-mail-from-within-custom-symfony2-command-but-can-from-sewhere –

+0

yes im using spool memory. и он работает в других классах. но здесь его не работает, я не знаю, почему – BrunoRamalho

+0

вы можете уточнить. Он работает в других классах в кли или когда вы работаете в сети. Это главное. Проверьте ссылку, которую я разместил. –

ответ

3

Добавьте это в конце выполнения вашей команды:

$spool = $this->mailer->getTransport()->getSpool(); 
$transport = $this->getContainer()->get('swiftmailer.transport.real'); 

$spool->flushQueue($transport); 

Вы должны расширить класс ContainerAwareCommand, чтобы иметь доступ к контейнеру службы в вашей команде.

+0

И я получил эту ошибку: вызовите функцию-член getKernel() на не-объект – BrunoRamalho

+0

@BrunoRamalho Убедитесь, что вы не вызываете эти методы в методе 'configure'. Весь код должен вызываться из метода 'execute' или одного из вспомогательных методов этого. –

0

Возможно ваши настройки золотников в config.yml

Использование spool: { type: memory } для отправки электронной почты мгновенно

# app/config/config.yml 
swiftmailer: 
    # ... 
    spool: { type: memory } 
+0

im используя память типа катушки – BrunoRamalho

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