2015-04-22 61 views
2

我已經成功地將我的symfony webapp配置爲使用SMTP發送郵件。但是我所有的發送郵件都被放入spool目錄。Swiftmailer沒有立即發送

這應該只發生在發送時有錯誤。那是對的嗎?

但是,如果我執行命令swiftmailer:spool:send --env=prod,我所有的電子郵件都發送正確。

爲什麼我的服務器沒有立即發送郵件? 是因爲我修正了一個錯誤?有沒有什麼辦法解決這一問題?

swiftmailer:

spool: 
    type: file 
    path: %kernel.root_dir%/spool 

回答

1

您可以強制刷新卷軸。 例如:

$mailer = $this->container->get('mailer'); 
$mailer->send($message); 

$spool = $mailer->getTransport()->getSpool(); 
$transport = $this->container->get('swiftmailer.transport.real'); 
if ($spool and $transport) $spool->flushQueue($transport); 

檢查也config.yml你的spool配置。

如果您有:

swiftmailer: 
    .... 
    spool:  { type: memory } 

郵件被髮送的內核終止事件(所以在頁面結束)

+0

是的,我在某些情況下這樣做。但是當'FOSUserBundle'發送郵件時,隊列不會被刷新。我使用spool文件作爲'file'。因此,只有在手動刷新時纔會發送電子郵件。在我的舊機器上,這是自動完成的。 – Victor

+0

,你不想使用內存? (至少對於FOSU​​serBundle) – griotteau

+0

爲什麼使用'file'和'memory'? – Victor