購読しているユーザーに定期的に電子メール アラートを送信できるようにする必要があります。PHP は1 つのメッセージを送信するのに苦労しているように見えるので、良い代替手段を探しています。
実装が十分に高速であれば、どの言語でもかまいません。送信されるメールの量は、最終的には数千になります。
ライセンスされたソフトウェアの購入を避けることができれば、なおさらです。
購読しているユーザーに定期的に電子メール アラートを送信できるようにする必要があります。PHP は1 つのメッセージを送信するのに苦労しているように見えるので、良い代替手段を探しています。
実装が十分に高速であれば、どの言語でもかまいません。送信されるメールの量は、最終的には数千になります。
ライセンスされたソフトウェアの購入を避けることができれば、なおさらです。
PHP での電子メール キューイング- 短いバージョン - Pear の Mail_Queue。私はこれを使用して、1 日あたり 30 ~ 50,000 件以上 (週に数日) 以上のメールを問題なく 1 年以上送信しています。
Javaの場合、http://java.sun.com/products/javamail/ があります。アプリケーションで使用しました。セットアップと使用は非常に簡単です。
Rubyでは非常にシンプルですが、使ったことがないのでパフォーマンスについては何も言えません。 http://snippets.dzone.com/posts/show/2362
そうは言っても...PHP自体が遅すぎてメールを送信できないのではないかと思います。おそらく、アプリケーションにボトルネックがありますか?
できることの 1 つは、質問の焦点を基になるメール ソフトウェアに変更することです。たとえば、大量の電子メールを送信する場合、任意の言語を使用して BSMTP 形式で書き出します。これは基本的に単純な SMTP クライアント コマンドのように見えます。何かのようなもの:
MAIL FROM:<me@example.com>
RCPT TO:<you@example.com>
DATA
From: Me <me@example.com>
To: You <you@example.com>
Subject: test email
This is the body of the test email I'm sending
.
次に、exim を介して BSMTP ファイルをフィードします。
cat *.bsmtp | exim -bS
これにより、プログラムから電子メールを送信する際の遅延が本質的に取り除かれ、exim に負担がかかります (MTA はそれを処理するのに適しているため)。
基本を理解したら、より効率的にするために変更できることがたくさんあります。たとえば、メールがカスタマイズされていない場合は、同じドメインのすべての受信者を同じ BSMTP ファイルに入れることで事前に最適化できます。
MAIL FROM:<me@example.com>
RCPT TO:<you@example.com>
RCPT TO:<him@example.com>
RCPT TO:<her@example.com>
RCPT TO:<them@example.com>
DATA
From: Me <me@example.com>
To: Me <me@example.com>
Subject: test email
This is the body of the test email I'm sending
.
また、メールを送信するために MTA 自体を最適化する方法についても、さまざまな調整の余地があります (たとえば、並行配信、同じ TCP 接続を介した同じメール サーバーへの電子メールの配信などを自動的に処理します)。
コードでそれを行うことに関しては、これを行うのに役立つ perl ライブラリがドロップされていました。基本的に、電子メールとアドレスを入力すると、必要に応じてメール サーバーへの呼び出しがフォークされます。許可する並列セッションの数を構成でき、サーバーの負荷も監視し、負荷がユーザーが構成可能なしきい値を超えた場合はスロットルを下げました。
データベース テーブルの電子メール キューに書き込むさまざまなアプリケーションと、そのテーブルをポーリングして電子メールを作成し、メール サーバー経由で送信する .Net Windows サービスがあります。
1分あたり最大1000通のメールを処理します...
私の以前の仕事で、PHP で大量の電子メール送信ソリューションを作成しましたが、これはうまく機能したので、完全に除外する理由がわかりません :)
Python の smtplib はセットアップが簡単で、非常にクリーンな API です。
CSV ファイルを読み込む e-Campaign というプログラムを使用しています。プログラムで行う必要がある場合は、10,000 通のメールを一度に送信しようとしないように、待機テクニックを組み込むことをお勧めします。e-Campaign では、一度に送信するメールの数を選択し、それらのバッチの間に休憩時間を入れることができます。それでも非常に高速ですが、サーバーで過負荷の問題が発生することはありません.
非常に簡単にメールをダウンロードして送信できるblatと呼ばれるdosベースのコマンドラインツールがあります