为了在Symfony 4.3应用程序中同时配置内存和假脱机邮件程序,我遵循docs创建此配置:
swiftmailer:
default_mailer: memory
mailers:
memory:
sender_address: 'admin@bogus.info'
transport: smtp
username: admin@bogus.info
password: 123Abcd
host: localhost
spool: { type: 'memory' }
spooler:
sender_address: 'admin@bogus.info'
transport: smtp
username: admin@bogus.info
password: 123Abcd
host: localhost
spool:
type: file
path: '%kernel.project_dir%/var/spool'
在services.yaml中:
App\Services\Emailer:
$spoolMailer: '%swiftmailer.mailer.spooler%'
$defaultMailer: '%swiftmailer.default_mailer%'
$senderAddress: '%swiftmailer.mailer.memory_mailer.sender_address%'
$projectDir: '%kernel.project_dir%'
但是使用服务中的这四个参数,php bin/console debug:container
会发生以下情况:
服务“ App \ Services \ Emailer”对不存在的依赖项 参数“ swiftmailer.mailer.spooler” ...
为什么此配置不起作用?
答案 0 :(得分:1)
服务“ App \ Services \ Emailer”依赖于不存在的参数“ swiftmailer.mailer.spooler” ...
带有%
符号的环绕参数使您可以将值传递给服务。
要注入服务,应在参数前加上@
符号。
此外,要获取默认的邮件服务,您必须注入@swiftmailer.mailer
编辑:检索发件人地址的正确方法:%swiftmailer.mailer.memory.sender_address%
更新的服务定义:
App\Services\Emailer:
$spoolMailer: '@swiftmailer.mailer.spooler'
$defaultMailer: '@swiftmailer.mailer'
$senderAddress: '%swiftmailer.mailer.memory.sender_address%'
$projectDir: '%kernel.project_dir%'