Ich habe ein Symfony 2.8-Projekt, das die Verwendung von zwei separaten Mailing-Diensten erfordert (z. B. Google SMTP und Yahoo SMTP). Ich habe sie so konfiguriert nach den docs:Wie injiziere ich verschiedene SwiftMailer-Mailer in verschiedene Dienste in Symfony?
swiftmailer:
default_mailer: mailer_google
mailers:
mailer_google:
transport: smtp
host: %mailer_google_host%
port: %mailer_google_port%
encryption: tls
username: %mailer_google_username%
password: %mailer_google_password%
mailer_yahoo:
transport: smtp
host: %mailer_yahoo_host%
port: %mailer_yahoo_port%
encryption: tls
username: %mailer_yahoo_username%
password: %mailer_yahoo_password%
Die Werte für die %variables%
sind alle definiert in parameters.yml
, die hier nicht relevant sind.
Ich versuche, eine benutzerdefinierte Mailer-Klasse zu verwenden, die zwei verschiedene Dienste verwendet wird, zu definieren, wie folgt aus:
aalaap.services.mailer_google:
class: Aalaap\AppBundle\Services\Mail\Mailer
arguments:
- @mailer
- '%mailer_google_sender%'
aalaap.services.mailer_yahoo:
class: Aalaap\AppBundle\Services\Mail\Mailer
arguments:
- @mailer_yahoo
- '%mailer_yahoo_sender%'
Jetzt, da die Standard-Mailer mailer_google
, in der ersten Service-Definition festgelegt ist , nur die Angabe @mailer
funktioniert gut. Der zweite Dienst kann @mailer_yahoo
jedoch nicht finden.
ServiceNotFoundException CheckExceptionOnInvalidReferenceBehaviorPass.php in Leitung 58: Der Dienst "aalaap.services.mailer_yahoo" hat eine Abhängigkeit von einem nicht existierenden Service "mailer_yahoo".
Ich habe es mit @mailer.mailer_yahoo
versucht, aber das funktioniert auch nicht. Wenn ich die erste Dienstdefinition so ändere, dass die spezifische @mailer_google
statt nur der Standard @mailer
verwendet wird, funktioniert das auch nicht. Kein Glück mit @swiftmailer.mailers.mailer_yahoo
.
Wie injiziere ich den zweiten (oder nicht standardmäßigen) Mailer in einen Dienst?
Ich denke, der primäre Service ist 'swiftmailer'. Versuchen Sie, diesen Befehl in der Konsole auszuführen und prüfen Sie, welche Dienstoptionen Sie aus dem Container haben. 'php bin/console debug: swiftmailer' – Jeet
Haben Sie versucht @ swiftmailer.mailer.mailer_yahoo (nicht @ swiftmailer.mailers.mailer_yahoo)? –
@UgoT. Ich habe das gerade herausgefunden, nachdem ich die Frage gepostet hatte! Fast immer finde ich die Antwort selbst heraus, nachdem ich auf dieser Seite Fragen gestellt habe. Wie auch immer - wenn du das als Antwort postest, werde ich es akzeptieren! – aalaap