3

Symfony アプリに新しいコマンドを作成しました。

このコマンドでは、FOS bundle から mailer として電子メールを送信 するサービスを呼び出します。

私の問題は、メールを送信するためにメール本文がコンソールに表示されることです。

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 に答える