6 Stimmen

Mehrere Instanzen von Swiftmailer in Symfony2

Symfony2 verwendet ein Swiftmailer-Bundle, um E-Mails zu senden.

Um Swiftmailer in Symfony2 zu verwenden und zu konfigurieren, muss man eine Konfiguration wie in der Dokumentation erklärt nutzen, z.B. über die Verwendung von YAML:

swiftmailer:
    transport:  smtp
    encryption: ssl
    auth_mode:  login
    host:       smtp.gmail.com
    username:   dein_benutzername
    password:   dein_passwort

Der Swiftmailer ist in Symfony2 als Service definiert, und eine Instanz davon kann in einem Controller wie folgt erhalten werden:

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

Nun, nehmen wir an, dass zwei verschiedene Konfigurationen für den Swiftmailer erforderlich sind, z.B. eine, die E-Mail-Spooling verwendet (z.B. für einen geplanten Newsletter) und eine andere, die sofort alle neuen E-Mails sendet (z.B. für den Passwort-verloren-Service). Daher würde ich vermuten, dass zwei separate Instanzen des Swiftmailer definiert werden sollten. Wie kann ich das in Symfony2 erreichen?

7voto

ozahorulia Punkte 9656

Es gibt keinen Standardweg in Symfony, um 2 verschiedene Instanzen zu haben. Aber Sie können einfach eine neue Klasse erstellen, die Swiftmailer erweitert, sie zu einem Service machen und einfach Ihrem unterschiedlichen Konfiguration dem Elternkonstruktor übergeben.

4voto

Altynbek Usenov Punkte 216
swiftmailer:
    default_mailer: second_mailer
    mailers:
        first_mailer:
        # ...
        second_mailer:
        # ...

// ...

// gibt den ersten mailer zurück
$container->get('swiftmailer.mailer.first_mailer');

// gibt auch den zweiten mailer zurück, da er der Standardmailer ist
$container->get('swiftmailer.mailer');

// gibt den zweiten mailer zurück
$container->get('swiftmailer.mailer.second_mailer');

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X