我试图通过使用自己的服务来覆盖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功能,但将电子邮件放入数据库队列进行处理,而不是发送直接电子邮件(批量处理高电子邮件卷)。
任何帮助将不胜感激。
答案 0 :(得分:0)
尽量获得服务:
$this->container->get('test.mailer');
答案 1 :(得分:0)
我实际上必须更新config.yml并在swiftmailer config下添加:
swiftmailer:
default_mailer: test.mailer
这允许我只使用我的服务作为默认邮件程序,所以我现在可以调用:
$this->container->get('mailer')->send($message);