2013-03-03 19 views
6

Symfony2 utilizza un pacchetto Swiftmailer per inviare e-mail.Istanze multiple di Swiftmailer in Symfony2

Per utilizzare e configurare Swiftmailer in Symfony2, è necessario utilizzare tale configurazione come explained nei documenti, ad es. utilizzando YAML:

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

La Swiftmailer è definito in Symfony2 come servizio e un'istanza di esso possono essere ottenuti in un controllore come segue:

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

Ora, supponiamo che due configurazioni differenti sono richiesto per il Swiftmailer, ad es uno che utilizza lo spooling della posta elettronica (ad esempio per una newsletter programmata) e un altro che invia immediatamente tutte le nuove e-mail (ad esempio per il servizio perso la password). Quindi, immagino che debbano essere definite due istanze separate di Swiftmailer. Come posso farlo in Symfony2?

+1

ora si può fare questo con Swiftmailer v2.3.3 +: http://stackoverflow.com/questions/16474822/swiftmailer-configuration-for-more-than-one -accounts-in-symfony-2? answertab = voti # tab-top – Ramazan

risposta

7

Non esiste un modo predefinito di symfony per avere 2 istanze differenti. Ma puoi semplicemente creare una nuova classe che estenda swiftmailer, trasformarlo in un servizio e passare semplicemente al costruttore genitore la tua diversa configurazione.

+0

Davvero?!?! Omg, questo è folle! A proposito ... seguirò i tuoi suggerimenti! – JeanValjean

+1

Ci dovrebbe essere qualcosa di simile per i gestori di entità! Si possono definire più gestori di entità ... sarebbe bello definire più istanze di 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

Penso che manchi una scheda dalla seconda riga di configurazione. – user1875631

+0

Inoltre, questo non sembra funzionare su Symfony 2.1. – user1875631

+0

2.1 è molto vecchio. Devi forse considerare un aggiornamento. –

Problemi correlati