В SwiftmailerBundle, которая управляет конфигурации почтовой программы, позволяет настроить только один конфигурации по умолчанию. Однако довольно просто настроить других. Просто используйте Swiftmailer напрямую или определите собственные классы почтовой программы с другими конфигурациями.
/**
* Gets the 'mailer' service.
*
* This service is shared.
* This method always returns the same instance of the service.
*
* @return Swift_Mailer A Swift_Mailer instance.
*/
protected function getMailerService()
{
return $this->services['mailer'] = new \Swift_Mailer($this->get('swiftmailer.transport'));
}
Вы можете определить столько сервисов, сколько хотите, с другой конфигурацией. Например, посмотрите следующий пример.
<service id="mysecond.transport.smtp" class="%swiftmailer.transport.smtp.class%" public="false">
<argument type="service" id="swiftmailer.transport.buffer" />
<argument type="collection">
<argument type="service" id="swiftmailer.transport.authhandler" />
</argument>
<argument type="service" id="swiftmailer.transport.eventdispatcher" />
<call method="setHost"><argument>%mysecond.transport.smtp.host%</argument></call>
<call method="setPort"><argument>%mysecond.transport.smtp.port%</argument></call>
<call method="setEncryption"><argument>%mysecond.transport.smtp.encryption%</argument></call>
<call method="setUsername"><argument>%mysecond.transport.smtp.username%</argument></call>
<call method="setPassword"><argument>%mysecond.transport.smtp.password%</argument></call>
<call method="setAuthMode"><argument>%mysecond.transport.smtp.auth_mode%</argument></call>
<call method="setTimeout"><argument>%mysecond.transport.smtp.timeout%</argument></call>
<call method="setSourceIp"><argument>%mysecond.transport.smtp.source_ip%</argument></call>
</service>
Тогда в вашем коде вы бы сделали что-то вроде.
$mySecondMailer = new \Swift_Mailer($this->get('mysecond.transport.smtp'));
Это должно сделать трюк.
Пожалуйста не то, что обработчик auth делится. Если вы используете две почтовые программы с этой настройкой, с разными именами/паролями это не сработает. См. Https://github.com/symfony/SwiftmailerBundle/pull/70 и https://github.com/symfony/SwiftmailerBundle/issues/73 – rolandow
Просто хочу указать, что у вас должна быть почтовая программа по умолчанию ' default ', иначе для вас будет создана почтовая программа для по умолчанию' default ', и вместо этого она будет использоваться по умолчанию. Я считаю, что это ошибка. – DavidLin
Проблема с обработчиком авторизации, идентифицированная rolandow, была исправлена в Swiftmailer. – Acyra