2012-06-11 23 views
5

私はウェブサイトを持っており、登録されたメンバーにパーソナライズされた電子メールを送信する必要があります。これは宣伝手続ではなく(迷惑メール)、状況に応じて随時通知します。バッチで送信する必要がある電子メールの数は最大3000です。このWebサイトはWindows 2008 Server(VPS)でホストされており、IIS7にSMTPをインストールしています。asp.netでバルク電子メールを送信する最良の方法

asp.netで大量のメールを送信する仕組みをどのように実装するのか、少し時間を費やした後、ちょっと混乱してしまいました。私は私ができる読んだから


  • は、Windowsサービスを作成して準備し、ピックアップディレクトリに入れてループ内で同期または非同期(新しいスレッド)それらを送ること既存のキューを確認します
  • SQL Server 2008から送信します(私は明示しています)。

あなたは最良の方法をお勧めしますか?

サーバーのブラックリストに問題がありますか?

これを実装するにはここでは言及していないより良い方法がありますか?

ありがとうございます。

+3

しないでください。あなたは内部的にこれを行うサーバーにとって非常に多くのリスクに晒されます:ブラックリスト - はい。正当なサービスを通じてそれを実行する - 利用可能なトンがあります。 – matthewnreid

答えて

5

あなたのサーバがブラックリストに載っているということに関しては、あなたが「一度に」送信するメールの件数はそれほど重要ではありません。あなたがそれらを必要としないユーザーにそれらを送信し、彼らがあなたをスパマーとして報告するなら、間違いなく多くのDNSブラックリストサイトの1つによってブラックリストに載るでしょう。

まず、オプトインシステムを使用してオプトインし、電子メールを送信し、「アカウントを有効にする」と応答した場合は、入力を想定していない場合はさらにメールを送信できます。間違ったアドレス。

処理する最良の方法に関しては、サイトとは別に実行される小さなサービスを作成するのが最善の方法です。実際には、IISサービスと同じスレッドを使用して電子メールを送信することは望ましくありません。

あなたが本当に徹底的にプロフェッショナルな方法を使いたい場合は、メッセージを送信してキューに入れるメッセージキューシステム(ActiveMQやRabbitMQなど)を実装したい場合は、それらのキューの1つを待ち受けるウィンドウプロセスを作成し、メールが来たらそれを送り出す。そうすれば、あなたのメールプロセッサーが死んだり、ゆっくり実行されたりするなどして、より多くのプロセッサーを起動し、同じキューに接続し、より多くのプロセスがジョブを共有する(単純な配布)。

ちょっと複雑ではないFIFOキューを使用するのはデータベースで簡単に作成でき、データスタンプのあるテーブルに電子メールを保存し、SELECT TOP 10 * From OutgoingMail ORDER BY datestamp ASC(覚えて、適切なインデックスを使用して)その後、単にバッチでそれらを送信するサービスを使用してください。

IISから可能な場合は、このようなことを避けるために、アプリケーションプールを途中でリサイクルする必要はありません。

関連する問題