为 OP 的答案提供一些额外的背景信息。
从 SwiftmailerBundle CompilerPass 进程中的 Symfony 2.3 开始,它执行以下操作。
$mailers = $container->getParameter('swiftmailer.mailers');
foreach ($mailers as $name => $mailer) {
$plugins = $container->findTaggedServiceIds(sprintf('swiftmailer.%s.plugin', $name));
foreach ($plugins as $id => $args) {
$transport->addMethodCall('registerPlugin', [new Reference($id)]);
}
}
基于此,您需要将所有邮件名称添加到您想要添加插件的标签中,格式为swiftmailer.%mailer_name%.plugin
. 替换%mailer_name%
为您的邮寄者的名称。
当不使用mailers
swiftmailer 的多重配置时,%mailer_name%
它default
是在捆绑配置中设置的。
$v['default_mailer'] = isset($v['default_mailer']) ? (string) $v['default_mailer'] : 'default';
$v['mailers'] = array($v['default_mailer'] => $mailer);
示例config.yml
swiftmailer:
default_mailer: first_mailer #alias: default
mailers:
first_mailer:
#...
second_mailer:
#...
services:
#...
swiftmailer.plugin.array_logger:
class: Swift_Plugins_Loggers_ArrayLogger
swiftmailer.plugin.logger:
class: Swift_Plugins_LoggerPlugin
arguments: ['@swiftmailer.plugin.array_logger']
tags:
- { name: swiftmailer.default.plugin }
- { name: swiftmailer.second_mailer.plugin }