Symfony2中的多个Swiftmailer实例

Symfony2中的多个Swiftmailer实例,symfony,swiftmailer,Symfony,Swiftmailer,Symfony2使用捆绑包发送电子邮件 要在Symfony2中使用和配置Swiftmailer,必须使用文档中的配置,例如使用YAML: swiftmailer: transport: smtp encryption: ssl auth_mode: login host: smtp.gmail.com username: your_username password: your_password Swiftmailer在S

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

要在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中实现这一点?

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

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');

真的吗?!?!天哪,这太疯狂了!顺便说一句我会听从你的建议!对于实体经理来说,应该有类似的东西!可以定义多个实体管理器。。。最好定义多个Swiftmailer实例!现在您可以使用swiftmailer v2.3.3+:我认为您缺少第二个配置行中的一个选项卡。2.1非常旧。你可能需要考虑更新。我找到了一种方法,创建不同的环境。由于我将为命令调用第二个帐户,只要在调用后添加--env=OTHER_env,就可以了。