2014-02-24 46 views
7

我無法通過控制檯命令發送包含symfony2的批量電子郵件。我想禁用郵件假脫機完成的控制檯運行在env,但保持它的默認環境工作。所以我有這樣的config.yml:在每個環境中禁用Symfony中的swiftmailer假脫機程序

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實際上並沒有關閉spool,但它使用的默認值爲{cache: file, path: %kernel.cache_dir%/swiftmailer/spool }

有沒有辦法通過改變參數或者是否有更好的方法來禁用spool?

+0

任何反饋?我的解決方案適合你嗎? – nifr

回答

13

顯然,禁用電子郵件假脫機的唯一方法是從配置文件中完全省去假脫機條目。一旦在主配置文件中包含假脫機條目,就無法爲特定環境禁用假脫機。也就是說,您可以完成與您的建議相反的操作:您可以在默認情況下禁用電子郵件假脫機並在特定環境中啓用它。

離開它在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% 
+0

這是目前唯一禁用後臺打印的唯一可行的方法。 –

+0

這對我有效,謝謝! =) –