Symfony2 + swift mailer + команда: тело письма отображается в консоли

Я создал новую команду в своем приложении Symfony.

В этой команде я вызываю службу, которая отправляет электронную почту как почтовую программу из пакета FOS.

Моя проблема в том, что тело письма отображается в консоли для отправки письма.

Хочу сказать, что метод 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);
    }
}

Пожалуйста помоги

Спасибо

Сэм


person Sam    schedule 09.07.2012    source источник


Ответы (2)


Я думаю, вы, возможно, использовали буферизацию памяти.

При использовании буферизации памяти вы должны знать, что из-за того, как 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

person wogong    schedule 09.03.2013
comment
Да это оно! Если вы отправляете электронные письма с той же конфигурацией через командную строку, очистить очередь электронной почты можно только вручную. Спасибо за информацию! +1 - person sensi; 03.01.2018

Я нашел решение.

Воспользуйтесь услугой таким образом:

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

нет

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

Это работает сейчас

Получайте удовольствие и надеюсь, что это поможет некоторым парням

Сэм

person Sam    schedule 09.07.2012