2013-03-03 8 views
6

Symfony2は、Swiftmailerバンドルを使用して電子メールを送信します。Symfony2のSwiftmailerの複数のインスタンス

Symfony2でSwiftmailerを使用して設定するには、docsにexplainedというような設定を使用する必要があります。

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

ではSwiftMailerをサービスとしてSymfony2の中で定義され、以下のようにインスタンスがコントローラに得ることができる:YAMLを使用して

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

それでは、2つの異なる構成であることを仮定してみましょうSwiftmailerに必要なもの、例えば(例えば、スケジュールされたニュースレターのための)電子メールスプーリングを使用するものと、(例えば、パスワードを失ったサービスのための)新しい電子メールを直ちに送信するものとがある。したがって、私は、Swiftmailerの2つの別々のインスタンスを定義する必要があると思います。 Symfony2でどうすればいいですか?

+1

今、あなたはではSwiftMailer v2.3.3 +でこれを行うことができます。 http://stackoverflow.com/questions/16474822/swiftmailer-configuration-for-more-than-one -accounts-in-symfony-2?answertab = votes#tab-top – Ramazan

答えて

7

2つの異なるインスタンスを持つデフォルトのsymfonyの方法はありません。しかし、あなたはswiftmailerを拡張する新しいクラスを作るだけで、それをサービスにして、親コンストラクタにあなたの別の設定を渡すことができます。

+0

本当に!!?!おや、これは狂ってる!ところで...私はあなたの提案に従います! – JeanValjean

+1

エンティティマネージャのようなものがあるはずです!複数のエンティティマネージャを定義することができます...複数の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

私はあなたが2番目の設定ラインからタブがないと思います。 – user1875631

+0

また、これはSymfony 2.1では動作しないようです。 – user1875631

+0

2.1は非常に古いです。おそらく更新を検討する必要があります。 –

関連する問題