7

在我的 Symfony2 网络应用程序中,我应该发送两种电子邮件:即时和批量。即时电子邮件应立即发送,而批量电子邮件应使用假脱机发送。使用 Symfony2 中 Swiftmailer 的默认配置是不可能的,因为只有一个邮件服务。

类似的问题已经在 SO(如何假脱机电子邮件(在任务中)并在其他控制器中发送普通电子邮件?)没有运气,但根据这个 github 线程(https://github.com/ symfony/SwiftmailerBundle/issues/6)可以创建第二个邮件服务,其配置与默认服务完全不同。那里的某个人 (stof) 建议按照 SwiftmailerBundle ( https://github.com/symfony/SwiftmailerBundle/blob/master/Resources/config/swiftmailer.xml ) 中的配置创建这个新服务作为可能的解决方案,但是我不知道具体是怎么做的。

有谁知道如何创建一个额外的邮件服务,我可以将其配置为假脱机,同时让默认邮件服务发送常规(即时)电子邮件?

4

1 回答 1

12

我在这里找到了解决方案

这就是我实现它的方式:

首先,我将默认邮件服务配置为作为假脱机来发送批量电子邮件。

(config.yml)

swiftmailer:
    transport: %mailer_transport%
    encryption: %mailer_encryption%
    auth_mode: %mailer_auth_mode%
    host: %mailer_host%
    username: %mailer_user%
    password: %mailer_password%
    spool:
        type: file
        path: "%kernel.root_dir%/spool"

然后,在我的一个包 (CommonBundle) 中,我注册了一个名为“instant_mailer”的新服务,该服务映射到 Swiftmailer 类。

(服务.yml)

instant_mailer:
    class: %swiftmailer.class%
    arguments: ["@?swiftmailer.transport.real"]

最后,在我的控制器中,每当我想使用线轴发送电子邮件时,我都会这样做:

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

并发送即时电子邮件:

$mailer = $this->get('instant_mailer');
于 2012-09-04T20:13:47.630 回答