Swiftmailer

时间:2019-11-08 00:18:27

标签: symfony swiftmailer

为了在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” ...

为什么此配置不起作用?

1 个答案:

答案 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%'