Symfony2 Swiftmailer服务定义不存在


Symfony2 Swiftmailer Service Definition does not Exist

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

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

我目前正在使用Symfony 2.5和Swiftmailer捆绑包~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功能,但将电子邮件放入数据库队列进行处理,而不是直接发送电子邮件(针对高电子邮件量的批量处理)。

如有任何协助,我们将不胜感激。

尝试获得如下服务:

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

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

swiftmailer:
    default_mailer: test.mailer

这让我可以只使用我的服务作为默认的邮递员,所以我现在可以呼叫:

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