Как определить дополнительный почтовый сервис для использования катушки и отправки мгновенных писем в Symfony2
В моем веб-приложении Symfony2 я должен отправлять два вида писем: мгновенные и массовые. Мгновенные электронные письма должны быть отправлены сразу же, в то время как массовые электронные письма должны быть отправлены с помощью катушки. С настройкой Swiftmailer по умолчанию в Symfony2 это невозможно сделать, потому что существует только один почтовый сервис.
Подобные вопросы были заданы здесь в SO (Как катушить электронные письма (в задаче) и отправлять нормальные электронные письма в данный момент в других контроллерах?) без удачи, но в соответствии с этой нитью github (https://github.com/symfony/SwiftmailerBundle/issues/6 ) можно создать вторую почтовую службу, которая может быть настроена совершенно иначе, чем стандартная. Кто-то там (stof) рекомендовал в качестве возможного решения следовать конфигурации, найденной в SwiftmailerBundle ( https://github.com/symfony/SwiftmailerBundle/blob/master/Resources/config/swiftmailer.xml ) чтобы создать этот новый сервис, но я не знаю, как именно сделать это.
Кто-нибудь знает, как создать дополнительный почтовый сервис, который я могу настроить как катушку, имея почтовый сервис по умолчанию для отправки регулярных (мгновенных) писем?
1 ответ:
Я нашел решение здесь
Вот как я это реализовал:
Во-первых, я настроил почтовую службу по умолчанию для работы в качестве катушки для отправки массовых писем.
(конфиг.yml)
swiftmailer: transport: %mailer_transport% encryption: %mailer_encryption% auth_mode: %mailer_auth_mode% host: %mailer_host% username: %mailer_user% password: %mailer_password% spool: type: file path: "%kernel.root_dir%/spool"
Затем, внутри одного из моих пакетов (CommonBundle) я зарегистрировал новый сервис под названием "instant_mailer", который соответствует классу Swiftmailer.
(сервис.yml)
instant_mailer: class: %swiftmailer.class% arguments: ["@?swiftmailer.transport.real"]
Наконец, в моем контроллере, когда я хочу отправить электронное письмо usning катушку я просто сделайте:
$mailer = $this->get('mailer');
И отправить мгновенное сообщение электронной почты:
$mailer = $this->get('instant_mailer');