Установка default_mailer для Swiftmailer в Symfony2 не работает

Я использую Symfony 2.7, который поставляется со SwiftmailerBundle 2.3.8.

это моя конфигурация

swiftmailer:
    mailers:
        spool_mailer:
            transport: "%mailer_transport%"
            host:      "%mailer_host%"
            username:  "%mailer_user%"
            password:  "%mailer_password%"
            spool:
                type: file
                path: %kernel.root_dir%/spool

        instant_mailer:
            transport: "%mailer_transport%"
            host:      "%mailer_host%"
            username:  "%mailer_user%"
            password:  "%mailer_password%"
    default_mailer: spool_mailer

Я хочу использовать 2 почтовые программы, одну для буферизации и одну для мгновенной отправки.

Эти две команды будут работать нормально, электронная почта либо помещается в буфер, либо отправляется мгновенно.

 $this->get('swiftmailer.mailer.instant_mailer')->send($email);
 $this->get('swiftmailer.mailer.spool_mailer')->send($email);

Однако,

  $this->get('mailer')->send($email);

Не извлекает default_mailer, который в моем случае является спулером, но отправляет его мгновенно. Я видел здесь, что это возможно, но, возможно, этот ответ неверен.

Я что-то пропустил в файле конфигурации? Или я не правильно называю?


person George Irimiciuc    schedule 13.11.2015    source источник
comment
Я действительно не понимаю почему, но я видел, что объявление строки default_mailer: spool_mailer выше, определяющей почтовые программы, сделает это. У меня тоже нет подтверждающих документов для этого. Но попробовать стоит, я считаю.   -  person Himel Nag Rana    schedule 25.04.2016


Ответы (1)


Я сталкиваюсь с той же проблемой, хотя и использую symfony версии 2.6.8. Единственное решение, которое я нашел на данный момент, это: удалить параметр default_mailer и установить почтовую программу по умолчанию с таким именем, это: default. Таким образом, ваша конфигурация будет выглядеть так:

swiftmailer:
    mailers:
        default: # your named spool_mailer
            transport: "%mailer_transport%"
            host:      "%mailer_host%"
            username:  "%mailer_user%"
            password:  "%mailer_password%"
            spool:
                type: file
                path: %kernel.root_dir%/spool

        instant_mailer:
            transport: "%mailer_transport%"
            host:      "%mailer_host%"
            username:  "%mailer_user%"
            password:  "%mailer_password%"

Теперь объект получен из $this->getContainer()->get('swiftmailer.mailer'); будет тот, который определен как по умолчанию, и больше НИКАКИХ ошибок не будет показано:

[Swift_TransportException]                                                         
  Connection could not be established with host localhost [Connection refused #111] 

Эта конфигурация работала для меня в проекте, над которым я сейчас работаю.

Я надеюсь, что это помогает.

person Samuel Vicent    schedule 25.04.2016