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

时间:2014-02-24 23:00:49

标签: php symfony yaml swiftmailer

我无法通过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%

然后每个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 }

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

parameters:    
    mailer_spool_type: ~

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

有没有办法通过更改参数来禁用假脱机,还是有更好的方法?

1 个答案:

答案 0 :(得分:22)

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

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

将其留在config.yml

swiftmailer:
    transport: %mailer_transport%
    host:      %mailer_host%
    port:      %mailer_port%
    username:  %mailer_user%
    password:  %mailer_password%

并将其包含在config_prod.yml

swiftmailer:
    spool:     %mailer_spool_type%