我正试图通过使用自己的服务来覆盖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);