3

我在我的 Symfony 应用程序中创建了一个新命令。

在此命令中,我调用了一项服务,该服务从 FOS bundle 作为邮件程序发送电子邮件

我的问题是电子邮件正文显示在控制台中以便发送电子邮件。

我想说该msg mailer方法在命令之外可以正常工作。

这是我的命令

class ReminderCommand extends Command
{
    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $this->container = $this->getApplication()->getKernel()->getContainer();            

        # the mailer service works fine out the command
        $mailer = $this->container->get('mailer');
        $mailer->sendMsg(...);          


        $text = ' => mail sent';

        $output->writeln($text);
    }
}

请帮忙

谢谢

山姆

4

2 回答 2

16

我想你可能已经使用了内存假脱机。

当使用内存假脱机时,你必须知道,由于 symfony 处理控制台命令的方式,电子邮件不会自动发送。您必须自己处理刷新队列。使用以下代码在控制台命令中发送电子邮件:

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

参考:http : //symfony.com/doc/2.0/cookbook/console/sending_emails.html

于 2013-03-09T08:44:28.883 回答
-2

我找到了解决方案。

以这种方式使用服务:

    $this->container->get('mailer')->sendMsg(...)

不是

    # the mailer service works fine out the command
    $mailer = $this->container->get('mailer');
    $mailer->sendMsg(...);

现在可以使用

玩得开心,希望它可以帮助一些人

山姆

于 2012-07-09T11:43:23.610 回答