symfony2电子邮件未在命令中发送

时间:2013-11-15 10:03:28

标签: symfony mailer

我正在使用symfony2开发一个应用程序 在应用程序的一方面,我正在发送电子邮件,一切都还可以。 但是现在我创建了一个在crontab中运行的命令,但这不会发送电子邮件。 这是我的命令: 使用Doctrine \ ORM \ EntityManager; 使用Symfony \ Component \ Templating \ EngineInterface;

类发件人{     受保护的$ em;受保护的$ twig; protected $ 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);
    } } }

查询一切正常,我测试过。 如果我可以从其他课程发送,为什么我不能在这里?

2 个答案:

答案 0 :(得分:3)

在执行命令结束时添加:

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

$spool->flushQueue($transport);

您必须扩展ContainerAwareCommand类才能访问命令中的服务容器。

答案 1 :(得分:0)

可能是config.yml中的假脱机设置

使用spool: { type: memory }即时发送电子邮件

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