2016-07-20 3 views
0

У меня есть проект Symfony 2.8, который требует использования двух отдельных почтовых сервисов (например, SMTP Google и SMTP Yahoo). Я устанавливал их в соответствии с Документами:Как мне добавить различные почтовые программы SwiftMailer в различные сервисы Symfony?

swiftmailer: 
    default_mailer: mailer_google 
    mailers: 
     mailer_google: 
      transport: smtp 
      host: %mailer_google_host% 
      port: %mailer_google_port% 
      encryption: tls 
      username: %mailer_google_username% 
      password: %mailer_google_password% 
     mailer_yahoo: 
      transport: smtp 
      host: %mailer_yahoo_host% 
      port: %mailer_yahoo_port% 
      encryption: tls 
      username: %mailer_yahoo_username% 
      password: %mailer_yahoo_password% 

Значения %variables% все определены в parameters.yml, которые не имеют отношения здесь.

Я пытаюсь использовать пользовательский класс Mailer, который используется для определения двух различных услуг, например:

aalaap.services.mailer_google: 
    class: Aalaap\AppBundle\Services\Mail\Mailer 
    arguments: 
     - @mailer 
     - '%mailer_google_sender%' 

aalaap.services.mailer_yahoo: 
    class: Aalaap\AppBundle\Services\Mail\Mailer 
    arguments: 
     - @mailer_yahoo 
     - '%mailer_yahoo_sender%' 

Теперь, потому что почтовая программа по умолчанию устанавливается в mailer_google, в первом определении сервиса , только указав @mailer работает отлично. Однако вторая услуга не может найти @mailer_yahoo.

ServiceNotFoundException в CheckExceptionOnInvalidReferenceBehaviorPass.php линии 58: Услуга "aalaap.services.mailer_yahoo" имеет зависимость от несуществующей службы "mailer_yahoo".

Я пробовал его с @mailer.mailer_yahoo, но это тоже не работает. Если я изменил первое определение службы, чтобы использовать конкретный @mailer_google, а не только по умолчанию @mailer, это тоже не сработает. Не повезло с @swiftmailer.mailers.mailer_yahoo.

Как мне вставить вторую (или нестандартную) почтовую службу в службу?

+0

Я думаю, что основным сервисом является 'swiftmailer'. Попробуйте запустить эту команду в консоли и проверьте, какие параметры сервиса у вас есть в контейнере. 'php bin/console debug: swiftmailer' – Jeet

+1

Вы пробовали @ swiftmailer.mailer.mailer_yahoo (не @ swiftmailer.mailers.mailer_yahoo)? –

+0

@UgoT. Я * просто * понял это сразу после публикации вопроса! Я почти всегда выясняю ответ сам после публикации вопросов на этом сайте. В любом случае - если вы опубликуете это как ответ, я приму это! – aalaap

ответ

2

Таким образом, это как настроить множественную отправители счета и обрабатывать инъекции с Symfony:

Настройте SwiftMailer конфигурация:

swiftmailer: 
    default_mailer: mailer_google 
    mailers: 
     mailer_google: 
      transport: smtp 
      host: %mailer_google_host% 
      port: %mailer_google_port% 
      encryption: tls 
      username: %mailer_google_username% 
      password: %mailer_google_password% 
     mailer_yahoo: 
      transport: smtp 
      host: %mailer_yahoo_host% 
      port: %mailer_yahoo_port% 
      encryption: tls 
      username: %mailer_yahoo_username% 
      password: %mailer_yahoo_password% 

Затем вводит разыскиваемую почтовую программу (например, Google почтовой программы) в сфере услуг таким образом:

aalaap.services.mailer_google: 
    class: Aalaap\AppBundle\Services\Mail\Mailer 
    arguments: 
     - @swiftmailer.mailer.mailer_google 
     - '%mailer_google_sender%' 

Или (потому что в этом случае Google почтовой программы является почтовая программа по умолчанию):

aalaap.services.mailer_google: 
    class: Aalaap\AppBundle\Services\Mail\Mailer 
    arguments: 
     - @swiftmailer.mailer.default_mailer 
     - '%mailer_google_sender%' 

 Смежные вопросы

  • Нет связанных вопросов^_^