Symfony2中的Swiftmailer的多个实例

时间:2013-03-03 16:41:26

标签: symfony swiftmailer

Symfony2 使用Swiftmailer捆绑包发送电子邮件。

要在Symfony2中使用和配置Swiftmailer,必须在文档中使用explained这样的配置,例如:使用YAML:

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

Swiftmailer在Symfony2中定义为服务,它的实例可以在控制器中获得,如下所示:

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

现在,让我们假设Swiftmailer需要两种不同的配置,例如:一个使用电子邮件假脱机(例如用于预定的新闻通讯),另一个立即发送所有新电子邮件(例如用于密码丢失服务)。因此,我想应该定义Swiftmailer的两个独立实例。 我如何在Symfony2中执行此操作?

2 个答案:

答案 0 :(得分:7)

没有默认的symfony方式来拥有2个不同的实例。但是你可以创建一个扩展swiftmailer的新类,使它成为一个服务,并将你的不同配置传递给父构造函数。

答案 1 :(得分: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