6

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

要在 Symfony2 中使用和配置 Swiftmailer,必须使用文档中解释的配置,例如使用 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 中做到这一点?

4

2 回答 2

7

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

于 2013-03-03T17:23:35.217 回答
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

于 2016-03-29T22:56:39.613 回答