5

私はウェブサイトを持っており、登録メンバーにパーソナライズされたメールを送信する必要があります。これは広告手順 (スパム) ではなく、時々ステータスを知らせるものです。バッチで送信する必要がある電子メールの数は最大 3000 です。Web サイトは Windows 2008 Server (VPS) でホストされており、IIS7 に SMTP をインストールしました。

asp.net を介して大量の電子メールを送信するためのメカニズムを実装する方法について読んだ後、少し混乱しました。


私が読んだことから、次のことができます:

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

最適な方法を教えてください。

サーバーをブラックリストに登録することに関して問題はありますか?

これを実装するための、ここで言及されていないより良い方法はありますか?

前もって感謝します。

4

1 に答える 1

6

ブラックリストに登録されているサーバーに関しては、「一度に」送信する量は重要ではなく、「送信先」は重要ではありません。あなたがそれらを望まないユーザーにそれらを送り、彼らがあなたをスパマーとして報告した場合、あなたは間違いなく周りの多くのDNSブラックリストサイトの1つによってブラックリストに載せられるでしょう。

常にダブルオプトインシステムを使用して最初にオプトインするようにしてください。メールを送信します。「アカウントを有効にする」と応答した場合は、間違ったアドレスを入力したと思わない場合は、さらにメールを送信できます。

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

あなたが本当に本格的なプロの方法に行きたいのなら。メッセージを送信する何らかの形式のメッセージキューシステム(ActiveMQやRabbitMQなど)を実装してキューに入れ、それらのキューの1つをリッスンするWindowsプロセスを作成し、電子メールが届いたときに送信します。そうすれば、メールプロセッサが停止したり、動作が遅い場合などに、より多くのプロセッサを起動し、同じキューに接続して、より多くのプロセスがジョブを共有できます(単純な分散)。

少し複雑ではない方法は、FIFOキューを使用することです。これは、データベースで簡単に作成でき、日付スタンプ付きのテーブルに電子メールを保存し、SELECT TOP 10 * FROM OutgoingMail ORDER BY datetamp ASCで送信します(覚えておいてください)。適切なインデックスを使用します)次に、サービスを使用して、それらをバッチで送信します。

このような場合、IISからの非同期は、可能であれば回避する必要があります。アプリプールがジョブの途中でリサイクルされることは望ましくありません。

于 2012-06-13T19:05:37.847 に答える