我使用的是SwiftmailerBundle 2.3.8附带的Symfony 2.7。
这是我的配置
swiftmailer:
mailers:
spool_mailer:
transport: "%mailer_transport%"
host: "%mailer_host%"
username: "%mailer_user%"
password: "%mailer_password%"
spool:
type: file
path: %kernel.root_dir%/spool
instant_mailer:
transport: "%mailer_transport%"
host: "%mailer_host%"
username: "%mailer_user%"
password: "%mailer_password%"
default_mailer: spool_mailer
我想使用两个邮件,一个用于后台打印,另一个用于即时发送。
这两个命令可以很好地工作,电子邮件要么被后台处理,要么立即发送。
$this->get('swiftmailer.mailer.instant_mailer')->send($email);
$this->get('swiftmailer.mailer.spool_mailer')->send($email);
然而,
$this->get('mailer')->send($email);
不会获取default_mailer
,在我的情况下它是后台处理程序,但它会立即发送。我在这里看到了这是可能的,但也许这个答案是错误的。
我在配置文件中遗漏了什么吗?还是我说得不对?
即使使用symfony 2.6.8版本,我也遇到了同样的问题。目前我找到的唯一解决方案是:删除default_mailer参数,并设置具有这样名称的默认mailer,即:default。所以你的配置应该是:
swiftmailer:
mailers:
default: # your named spool_mailer
transport: "%mailer_transport%"
host: "%mailer_host%"
username: "%mailer_user%"
password: "%mailer_password%"
spool:
type: file
path: %kernel.root_dir%/spool
instant_mailer:
transport: "%mailer_transport%"
host: "%mailer_host%"
username: "%mailer_user%"
password: "%mailer_password%"
从现在起,对象从$this->getContainer()->get('swiftmailer.mailer');将是定义为默认的错误,并且不会显示更多类似的错误:
[Swift_TransportException]
Connection could not be established with host localhost [Connection refused #111]
这个配置在我目前正在进行的项目中对我有效。
我希望它能有所帮助。