2013-03-03 15 views
6

Symfony2 używa zestawu Swiftmailer do wysyłania wiadomości e-mail.Wiele wystąpień Swiftmailer w Symfony2

Aby używać i konfigurować Swiftmailer w Symfony2, należy użyć takiej konfiguracji, jak explained w dokumentach, np. za pomocą YAML:

swiftmailer: 
    transport: smtp 
    encryption: ssl 
    auth_mode: login 
    host:  smtp.gmail.com 
    username: your_username 
    password: your_password 

Swiftmailer jest zdefiniowana w Symfony2 jako usługa i instancji może być uzyskany w kontrolerze następująco:

$mailerinstance = $this->get('mailer'); 

Teraz załóżmy, że dwie różne konfiguracje wymagane dla Swiftmailer, np taki, który używa buforowania poczty e-mail (np. do zaplanowanego biuletynu) i inny, który wysyła natychmiast wszystkie nowe wiadomości e-mail (np. do usługi utraty hasła). Tak więc przypuszczam, że powinny zostać zdefiniowane dwa oddzielne wystąpienia Swiftmailera. Jak mogę to zrobić w Symfony2?

+1

Teraz można to zrobić z swiftmailer v2.3.3 +: http://stackoverflow.com/questions/16474822/swiftmailer-configuration-for-more-than-one -konta-in-symfony-2? answerertab = głosy # tab-top – Ramazan

Odpowiedz

7

Nie ma domyślnego sposobu symfony na 2 różne wystąpienia. Ale możesz stworzyć nową klasę, która rozszerza swiftmailer, sprawi, że będzie to usługa i po prostu przekaże konstruktorowi macierzystemu twoją inną konfigurację.

+0

Naprawdę?!?! Omg, to jest szalone! Przy okazji ... będę postępować zgodnie z twoimi sugestiami! – JeanValjean

+1

Powinno być coś takiego dla menedżerów podmiotu! Można zdefiniować wiele menedżerów encji ... byłoby miło zdefiniować wiele instancji Swiftmailer! – JeanValjean

4
swiftmailer: 
    default_mailer: second_mailer 
    mailers: 
     first_mailer: 
     # ... 
     second_mailer: 
     # ... 

// ... 

// returns the first mailer 
$container->get('swiftmailer.mailer.first_mailer'); 

// also returns the second mailer since it is the default mailer 
$container->get('swiftmailer.mailer'); 

// returns the second mailer 
$container->get('swiftmailer.mailer.second_mailer'); 

http://symfony.com/doc/current/reference/configuration/swiftmailer.html#using-multiple-mailers

+0

Myślę, że brakuje Ci zakładki z drugiej linii konfiguracyjnej. – user1875631

+0

Nie działa to również w Symfony 2.1. – user1875631

+0

2.1 jest bardzo stary. Prawdopodobnie musisz rozważyć aktualizację. –

Powiązane problemy