Swiftmailer 中不存在的参数

Nonexistent parameter in 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 会发生以下情况:

The service "App\Services\Emailer" has a dependency on a non-existent parameter "swiftmailer.mailer.spooler"...

为什么这个配置不起作用?

The service "App\Services\Emailer" has a dependency on a non-existent parameter "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%'