2017-05-30 42 views
0

私はLaravel's Mailファサードでメールを送信しようとしています。 5.3。私は私の会社のローカルSMTPサーバーを使用しています。それは非常に遅く、1秒あたりの電子メールよりも大きい。とにかくこれをスピードアップするには?私は、接続を確立し、開いたままにして、それを再利用する方法のために周りを探索しましたが、ダイスはありません。私はすでにこの非同期をトリガーしているので、キューイングは大きな助けにはならず、遅さをさらに押し下げるだけです。Laravel Mail FacadeローカルSMTPでメールを送信するのが非常に遅い

foreach($customers as $customer) { 

    //build $params, $sendTo, $subject 

    Mail::send(array('myemailview',null), $params, 
     function($message) use ($sendTo, $subject) 
     { 
      $message 
      ->to([$sendTo]) 
      ->subject($subject); 

     }); 
} 
+0

多分、それは意図的にSMTP側のスロットルですか? – apokryfos

+0

私が知っている限り、ララヴェルが行うことはありません。 SMTPサーバーが抑制されますか?ハングアップがどこにあるかを確認するためにコードをプロファイリングできますか?SMTP接続を行うのに長い時間がかかりますか、それは待たされていますか? – samiles

+0

メールサーバが遅くなっていて、存在しないバウンスサーバを使用するように構成されていて、解決しようとするとメールが失敗するまで送信されないという問題がありました。とにかく、これはララベルの問題ではなく、ホスティングの問題のように聞こえます。 – apokryfos

答えて

0

最高のパフォーマンスのメールサーバーであっても、電子メールを同期的に送信すると遅延が発生します。それを上にするには、それをループで実行しています。

まず、メールをキューに入れることです。デフォルトであるsyncキューは何もせず、完了するまで正常にジョブを実行します。データベースやRedisのような専用のキューを設定する必要があります。その後、メールをキューにプッシュします。これだけですぐにあなたに遅れを取り除き、待ち行列がそれを悪化させると言っています。

第2に、メールのレイアウトとコンテンツが同じ場合は、bccを使用してすべてのユーザーに単一のメールを送信することを検討してください。

関連する問題