Symfony2 Swiftmailer服务定义不存在

时间:2014-09-02 17:10:35

标签: php symfony swiftmailer

我试图通过使用自己的服务来覆盖Swiftmailer的默认传输。这将允许我使用与Swiftmailer相同的方法调用,如setTo,setSubject,attach等。但是,我收到以下错误消息:

The service definition "swiftmailer.mailer.transport.test.mailer" does not exist.

我目前正在使用Symfony 2.5和Swiftmailer Bundle~2.3。请参阅我的src / Bundle / ApplicationBundle / Resources / config / services.xml文件以及与此问题相关的app / config / config.yml文件部分:

的services.xml

<parameters>
    <parameter key="test.mailer.class">TEST\Bundle\TestBundle\Mail\MailQueueTransport</parameter>
</parameters>

<services>
    <service id="test.mailer" class="%test.mailer.class%">
        <argument type="service" id="service_container"/>
    </service>
</services>

config.yml

imports:
    - { resource: "@TESTTestBundle/Resources/config/services.xml"}

swiftmailer:
    transport: "test.mailer"

所有其他服务都运行正常,此方法适用于Symfony 2.1.3和Swiftmailer Bundle 2.1.0。目标是使用内置的Swiftmailer功能,但将电子邮件放入数据库队列进行处理,而不是发送直接电子邮件(批量处理高电子邮件卷)。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

尽量获得服务:

$this->container->get('test.mailer');

答案 1 :(得分:0)

我实际上必须更新config.yml并在swiftmailer config下添加:

swiftmailer:
    default_mailer: test.mailer

这允许我只使用我的服务作为默认邮件程序,所以我现在可以调用:

$this->container->get('mailer')->send($message);