在每个环境中禁用Symfony中的swiftmailer spool

Dav*_*one 11 php yaml swiftmailer symfony

我无法通过console命令使用symfony2发送批量电子邮件.我想为运行控制台的env禁用邮件假脱机完成,但保持其工作为默认环境.所以我在config.yml中有这个:

swiftmailer:
    transport: %mailer_transport%
    host:      %mailer_host%
    port:      %mailer_port%
    username:  %mailer_user%
    password:  %mailer_password%
    spool:     %mailer_spool_type%
Run Code Online (Sandbox Code Playgroud)

然后每个env都有参数,如parameters_prod.yml:

parameters:
    mailer_transport:       smtp
    mailer_host:            smtp.someserver.net
    mailer_port:            587
    mailer_user:            "someuser"
    mailer_password:        "somepassword"
    mailer_spool_type:      { type:memory }
Run Code Online (Sandbox Code Playgroud)

然后对于控制台env我使用parameters_cron.yml:

parameters:    
    mailer_spool_type: ~
Run Code Online (Sandbox Code Playgroud)

问题是使用~null实际上没有关闭假脱机但它使用默认值{cache: file, path: %kernel.cache_dir%/swiftmailer/spool }

有没有办法通过更改参数来禁用线轴或有更好的方法吗?

jak*_*man 22

显然,禁用电子邮件假脱机的唯一方法是从配置文件中完全省略假脱机条目.在主配置文件中包含假脱机条目后,无法禁用特定环境的假脱机.

也就是说,您可以完成与您的建议相反的操作:您可以默认禁用电子邮件假脱机并在特定环境中启用它.

把它留在config.yml:

swiftmailer:
    transport: %mailer_transport%
    host:      %mailer_host%
    port:      %mailer_port%
    username:  %mailer_user%
    password:  %mailer_password%
Run Code Online (Sandbox Code Playgroud)

并将其包含在config_prod.yml:

swiftmailer:
    spool:     %mailer_spool_type%
Run Code Online (Sandbox Code Playgroud)

  • 在symfony 4.2中,您不需要在swiftmailer.yaml中评论假脱机行 (2认同)