2016-12-08 27 views
1

私はリストから電子メールアドレスを抽出し、次々に電子メールを送信するPHPコードを開発しました。 PHPMailerライブラリを使用してGmailアカウントを送信しています。PHPMailerを使用したSMTPメールの時間最適化

私は、一度に約5000通のメールを送信するつもりです。 (これはスパムではなく心配しないでください。これは出席者に予定されているイベントに関する通知です)。今までのところ、最高の出力はコードが5分間実行される133の電子メールです。それは非常に遅いです。私はset_time_limit()で実行時間を延ばすことができると思います。それでも、すべてのメールの送信を完全に完了するまでには約3時間かかります。私のコードについて

少数の明確化:私はSMTPKeepAlive = true; 2.電子メールの設定だけでなく、接続して生きているSMTP接続を保持している 1は、ループの外です。ループ内では、電子メールIDだけを抽出し、AddAddressに渡して送信します。 3.私は、メーリングリストのウェブサイト/ソフトウェアを使用するのではなく、自分のコードに固執したいと思います。

プロセスを最適化して数分で完了できますか?

+0

を持っています。 PHPMailerで提供されているメーリングリストの例に基づいてコードを作成しましたか? Gmailは決して非常に高速になることはありません。速度を上げるには、リレーとして機能するローカルのMTAにメッセージを送信します。そのメカニズムを使って、私は最大約100万メッセージ/時間を得ることができます。 5000にはほんの数秒しかかかりません。 – Synchro

+1

プロファイラを使用して、コードの所要時間を調べます。 – Robert

+0

SMTP接続を開いたままにして、同じSMTPセッション内で5000個のメールをすべて送信するとしますか?多くのファイアウォール(私が働いているものを含む)が長い接続時間を失うため、何らかの理由がありますか?特定のIPから1時間以内に送信できる電子メールの数も料金に含まれます。 – Kitson88

答えて

0

この件については、SendGridなどのトランザクションメールサービスを使用します。電子メール(複数のアドレスに1つの電子メール)を送信するには、 API。そして、これはsmtpサーバーに常に接続するのに比べてわずか500ミリ秒しかかかりません。

注:私はSendGridとは何ら関連していません。私はその製品を愛しています(あなたと似たような状況でサービスを発見しました)。 (彼らは1ヶ月に無料の12,000メールを計画しています)。

注2:彼らはまた、右のほとんどの事をやっているようですねPHP api

関連する問題