2013-08-22 34 views
2

高效的通訊我想每週簡訊發送至17.000人,基於Symfony2中和Swiftmailer。我目前的問題是,我爲控制檯編寫了一個命令。我可以通過例如「php app/console mail:send --newsletter 0 500」來調用它。最後兩個數字是偏移量的附加變量以及應該一次選擇的收件人數量。我通常會做的是使用一個cronjob,一旦調用此命令,在這種情況下,與偏移量爲0和20.000的量來獲取所有收件人。這不起作用,或者至少郵件數量太大。我的第一個測試是自己發送這些郵件,以便我可以看到發生了什麼。劇本直到我達到500或更少時纔會結束。這是正常的嗎?與Symfony2中和Swiftmailer

這裏是我做的:

  1. 讓用戶從DB
  2. 找到我想在這個通訊在所有收件人發送
  3. 運行數據庫的文章,產生了$新消息message = \ Swift_Message :: newInstance()...並調用$ this-> mailer-> send($ message);
  4. 終於做這個刷新隊列:

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

關於什麼我不知道是我現在應該把所有這些郵件。用cronjob調用一個shell腳本是不對的,通過改變偏移量來迭代這個命令,這樣一次只能生成500封郵件?或者什麼是正確的方法來做到這一點?或者我是否完全錯誤,這就是爲什麼我不能發送超過500?以1000爲例,控制檯在我取消腳本之前不會有任何反應。我已經嘗試在後臺啓動它,但似乎腳本根本不起作用......沒有錯誤或類似的事情發生,只是沒有反應。

編輯:或者是更好的使用特定的郵箱發送所有這些郵件,而不是使用PHP與郵件() - 這可能是也是在SwiftMailer使用的功能,?

非常感謝您的幫助! 曼努埃爾

+0

其正常執行隊列中有超過500的郵件不是一次。大多數郵件服務器會拒絕傳送郵件,當來自相同源的郵件過多時。我在Symfony 1.4中有一個項目,我們在十分鐘內發送了500封郵件,這非常棒。 – falsch

+0

因此,您的通話有延遲嗎?但是你有1個cronjob或者許多cronjob,延遲10分鐘? – Manuel

回答

0

我們有類似的情況,我們決定採用奏鳴曲通知捆綁RabbitMQ的+。您可以創建一個控制檯命令生成的所有信息,並將其發送到RabbitMQ的,然後用奏鳴曲包,您可以創建一個消費thah管理隊列發送電子郵件的組。
如果您需要幫助它的配置,我們在這裏

+0

謝謝Imanol,我會試一試,回到你的奉獻! – Manuel