2


0

購読しているユーザーに定期的にEメールアラートを送信できるようにする必要があります。 PHPは_one_メッセージを送信するのに苦労しているように思われるので、私は良い選択肢を探しています。

実装が十分速いなら、どんな言語でも構いません。 送信されるメールの量は、最終的には数千になります。

ライセンスされたソフトウェアの購入を避けることができるのであれば、そんなに優れています。

8 Answer


2


https://stackoverflow.com/questions/17609/email-queueing-in-php#17696[phpでのメールキューイング]  - ショートバージョン -  Pear's Mail_Queue。 私はこれを使って1年以上問題なく1日に30〜50,000通以上(週に数日)送付してきました。


1


データベーステーブルの電子メールキューに書き込むさまざまなアプリケーションと、電子メールを作成してメールサーバーを介して送信するためにそのテーブルをポーリングする.Net Windowsサービスがあります。

毎分最大1000通の電子メールを送信します。


1


Javaの場合、http://java.sun.com/products/javamail/があります。私はこれをアプリケーションで使用しました。 セットアップと使用がとても簡単です。

Rubyではそれは非常に単純ですが、私はそれを使ったことがないのでパフォーマンスについては何も言えません。 http://snippets.dzone.com/posts/show/2362

それは言った…​ PHP自体がメールを送信するには遅すぎるとは思わない。 おそらくあなたはあなたのアプリケーションにいくつかのボトルネックがありますか?


1


私の以前の仕事で私達はPHPで大量メール送信ソリューションを作成したことを申し上げたいのですが、なぜあなたがそれを完全に排除するのかわかりません:)


1


pythonのsmtplibはセットアップが簡単で、非常にきれいなAPIです。


1


あなたができることの一つは、基礎となるメールソフトウェアに質問の焦点を変えることです。 たとえば、大量のEメールを送信したい場合は、BSMTP形式でそれらを書き出すために任意の言語を使用します。これは基本的に単純なSMTPクライアントコマンドのように見えます。 何かのようなもの:

差出人:RCPT宛先:DATA送信者:Me宛先:あなた件名:test email

これは私が送信しているテストメールの本文です。
.

それから私はeximを通してBSMTPファイルをフィードするでしょう:

猫* .bsmtp | exim-bS

これは本質的にあなたのプログラムからEメールを送信する際の遅れを取り除き、eximに負担をかけます(MTAはそれを扱うためによりよく装備されている)。

基本を習得したら、より効率的にするために変更できるものがたくさんあります。 たとえば、メールがカスタマイズされていない場合は、同じドメインのすべての受信者を同じBSMTPファイルに入れることで、事前に最適化できます。

差出人:RCPT宛先:RCPT宛先:RCPT宛先:RCPT宛先:データ送信者:Me宛先:Me件名:test email

これは私が送信しているテストメールの本文です。
.

また、MTA自体をどのように最適化してメールを送信するかについても多くの余裕があります(たとえば、自動的にパラレル配信、同じTCPサーバーを介した同じメールサーバーへのEメール配信など)。

コードでそれをすることに関しては、私たちはこのことをするのを助けたperlライブラリのドロップを持っていました。 基本的にあなたはそれにEメールとアドレスを与えました、そしてそれは必要に応じてメールサーバーへの呼び出しを分岐させるでしょう。 許可する並列セッションの数を設定でき、またサーバーの負荷を監視し、負荷がユーザー設定可能なしきい値を超えた場合は抑制します。


0


e-CampaignというCSVファイルを読み込むプログラムを使用しています。 あなたがプログラム的にそれをしなければならないなら、あなたはあなたが一度に10,000の電子メールを送ろうとしないように待っているテクニックを組み入れたいかもしれません。 e-Campaignでは、一度に送信するEメー​​ルの数を選択し、それらのバッチの間に休憩時間を入れることができます。 それはまだ非常に高速ですが、サーバーで過負荷の問題を引き起こすことはありません。


-2


あなたが非常に簡単に電子メールをダウンロードして送ることができるというblatと呼ばれるdosベースのコマンドラインツールがあります