在Symfony中每个环境下禁用SwiftMailer spool

12

我在使用Symfony2的控制台命令发送批量邮件时遇到了问题。我希望禁用邮件的暂存功能,但保持默认环境的邮件暂存功能。因此,我在config.yml中添加了以下内容:

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

然后每个环境都有它自己的参数,比如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 }

然后对于控制台环境,我使用parameters_cron.yml参数文件:

parameters:    
    mailer_spool_type: ~

问题在于使用 ~null 实际上并没有关闭邮件池,而是使用了默认的值:{cache: file, path: %kernel.cache_dir%/swiftmailer/spool}

是否有一种方法可以通过更改参数来禁用邮件池,或者是否有更好的方法?


有任何反馈吗?我的解决方案对您有用吗? - Nicolai Fröhlich
1个回答

24

显然,禁用电子邮件排队的唯一方法是完全省略配置文件中的排队条目。一旦在主配置文件中包含排队条目,就无法禁用特定环境的排队。

话虽如此,您可以实现相反的提案:默认情况下禁用电子邮件排队,并在特定环境中启用它。

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%

这是目前唯一可行的禁用 spooling 的方法。 - Bob Van de Vijver
3
在Symfony 4.2中,您需要在swiftmailer.yaml文件中注释掉spool行。 - user11056335

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接