FOSUserbundle отправляет электронную почту правильно, я не могу

Я успешно настроил FOSUserBundle. Он правильно отправляет письмо активации.

Мой config_dev.yml выглядит следующим образом:

...
swiftmailer:
    transport: gmail
    username:  my_username@gmail.com
    password:  my_password
    disable_delivery:  false

Мой parameters.yml выглядит следующим образом:

parameters:
    ...
    mailer_transport: gmail
    mailer_host: null
    mailer_user: my_username@gmail.com
    mailer_password: my_password

Проблема начинается, когда я пытаюсь сделать следующее (очень простое):

    $message = \Swift_Message::newInstance()
    ->setSubject('Please sign up to ProJacked!')
    ->setFrom('send@example.com')
    ->setTo($emailaddress)
    ->setBody($this->renderView('HR/invitationemail.txt.twig'));
    $this->get('mailer')->send($message);

Код работает правильно, но электронные письма отправляются "в режиме отладки", поэтому я вижу их в профилировщике, но на самом деле они не отправляются. Что мне не хватает? Я знаю, это что-то супер простое:/

1 ответ

Решение

В стандартной версии Symfonyapp/config.ymlSwift по умолчанию помещает электронные письма в память:

# Swiftmailer Configuration
swiftmailer:
    transport: "%mailer_transport%"
    host: "%mailer_host%"
    username: "%mailer_user%"
    password: "%mailer_password%"
    spool: { type: memory }

Вы можете удалить spool линия, чтобы предотвратить спулинг памяти. Вы также можете очистить очередь вручную (что обычно требуется для консольных команд), хотя Symfony утверждает, что после Symfony 2.3+ и Swiftmailer 2.3.5+ этот шаг больше не требуется

$spool = $mailer->getTransport()->getSpool(); // $mailer is the mailer service
$transport = $container->get('swiftmailer.transport.real');

$spool->flushQueue($transport);

Наконец, убедитесь, что вы выполнили действия для Gmail, как описано здесь: http://symfony.com/doc/current/cookbook/email/gmail.html

Другие вопросы по тегам