Symfony3 - SwiftMailer:不存在的参数“mailer_encryption”

时间:2017-04-10 09:14:23

标签: php symfony swiftmailer

我在Symfony 3.2.4和PHP 5.6.28中的应用程序

一切都是最新的: 我的SwiftMailer版本:

  

symfony / swiftmailer-bundle(v2.5.4)

当我阅读官方文档时,我写道我可以像这样为SwiftMailer添加参数:

config.yml

swiftmailer:
    transport: "%mailer_transport%"
    host:      "%mailer_host%"
    username:  "%mailer_user%"
    password:  "%mailer_password%"
    encryption: "%mailer_encryption%"
    port:    "%mailer_port%"
    spool:     { type: memory }
    logging: true

parameters.yml

parameters:
    database_host: localhost
    database_port: null
    database_name: BASE
    database_user: root
    database_password: root
    mailer_host: smtp-relay._.com
    mailer_port: 587
    mailer_transport: smtp
    mailer_encryption: tls
    mailer_user: -
    mailer_password: -
    secret: -

但是当我运行“作曲家更新”时,我总是得到同样的错误:

  

[Symfony的\元器件\ DependencyInjection \异常\ ParameterNotFoundException]   您已请求不存在的参数“mailer_encryption”

我必须在config.yml中评论“加密”和“端口”并再次进行“作曲家更新”。

这是SwiftMailer Bundle的正常行为吗?有人能帮助我吗?

我正在使用FOSuser。

2 个答案:

答案 0 :(得分:4)

如果有人再次遇到此问题,那是因为在更新时,作曲家会查看parameters.yml.dist哪个用作模板,如果parameters.yml中的参数不在模板中,他们会被删除。

所以在parameters.yml.dist中你必须添加字段:

paremeters:
    ....
    mailer_transport:  smtp
    mailer_host:       127.0.0.1
    mailer_encryption: ~ (<!-- this line was added -->)
    mailer_user:       ~
    mailer_password:   ~
    ...

然后您可以像以前一样在parameters.yml中添加值,并在config.yml

中使用它
swiftmailer:
    transport:  "%mailer_transport%"
    host:       "%mailer_host%"
    username:   "%mailer_user%"
    password:   "%mailer_password%"
    encryption: "%mailer_encryption%"  (<!-- like this -->)
    port:       587    
    spool:      { type: memory }
    logging:    true

同样适用于端口

答案 1 :(得分:2)

我一周前解决了这个问题:

# Swiftmailer Configuration
swiftmailer:
    transport: "%mailer_transport%"
    host:      "%mailer_host%"
    username:  "%mailer_user%"
    password:  "%mailer_password%"
    encryption: tls
    port:    587
    spool:     { type: memory }
    logging: true