Nie można wysłać wiadomości e-mail z poziomu niestandardowego polecenia Symfony2, ale można z innego miejsca w aplikacji

Napisałem niestandardowe polecenie konsoli, aby wysłać zapytanie do mojej bazy danych, wygenerować raport i wysłać go pocztą elektroniczną na adres; jednak nie mogę z powodzeniem wysłać e-maila. Mogę wysyłać wiadomości e-mail z normalnych kontrolerów w innych miejscach mojej aplikacji, a także mogę wysyłać je z poziomu komendy konsoli, jeśli ręcznie utworzę i skonfiguruję instancję Swift_Mailer i nie otrzymam jej przez kontener.

Oto uproszczona wersja mojej komendy konsoli:

<?php

namespace Foo\ReportBundle\Command;

use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

class ExpiryCommand extends ContainerAwareCommand
{
    protected function configure()
    {
        $this->setName('report:expiry')
            ->setDescription('Compile and send e-mail listing imminent expiries');
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        /* ... */
        $message = \Swift_Message::newInstance()
            ->setSubject('Expiry report')
            ->setFrom('[email protected]')
            ->setTo('[email protected]')
            ->setBody($body);

        $mailer = $this->getContainer()->get('mailer');

/*      This works...
        $transport = \Swift_SmtpTransport::newInstance('smtp.domain.com', 25)
            ->setUsername('username')
            ->setPassword('password');
        $mailer = \Swift_Mailer::newInstance($transport);
*/
        $result = $mailer->send($message);
        $output->writeln($result);
    }
}

Swiftmailer jest skonfigurowany do wysyłania za pośrednictwem SMTP w moimapp/config/config.yml plik (delivery_address: [email protected] jest również ustawionyapp/config/config_dev.yml):

swiftmailer:
    transport: smtp
    host: smtp.domain.com
    username: username
    password: password
    spool:
        type: memory

Po uruchomieniu polecenia jest drukowane1 do linii poleceń, co, jak sądzę, oznacza, że ​​się powiodło. Jednak monitoruję dzienniki mojego serwera pocztowego w tym samym czasie i nawet się nie łączy.

Aby potwierdzić, że moja konfiguracja została załadowana do programu pocztowego, zmieniłem buformemory dofile a komunikaty są buforowane do systemu plików podczas uruchamiania polecenia i mogę z powodzeniem opróżnić bufor w wierszu poleceń za pomocąphp app/console swiftmailer:spool:send.

Czy ktoś ma jakieś pomysły co do tego, co się tutaj dzieje, lub jakieś sugestie, w jaki sposób mogę go dalej debugować? Nic nie pojawia się w moimapp/logs/dev.log plik. Używam Symfony 2.1.3-DEV.

questionAnswers(3)

yourAnswerToTheQuestion