0

四半期ごとに 10000 件以上のメールを送信する必要があるという要件があります。この目的のために、私は毎日トリガーし、3 か月後にのみメール機能を実行する Windows サービスを使用しました。データベースから過去 3 か月のレコードを取得する必要があり、レコードごとに 1 つのメールを送信する必要があります。

私が直面した問題は、私が使用したメール サーバーが一括メール送信を許可していないことでした。

送信ごとに遅延を設けることでこれを効果的に行うにはどうすればよいですか (1 分あたり 20 メール)。

4

1 に答える 1

1

これをアーカイブする方法はたくさんあります。かつて同様の要件があり、特別なデータベース テーブル (メール キュー) からアイテムをフェッチし、各メールを個別に送信する独自​​のサービスを介して解決しました。キューは、通常のビジネス ロジックによって時間の経過とともに満たされます。必要なロックは、db を介して行うこともできます。SCHEDULE 列には、メール送信の予定時刻が格納されます。このようにして、サービスは送信の準備が整ったメールのみを収集します。送信が成功した後、成功をマークするために別の列 (SENT_TIMESTAMP) が使用されます。

サービス全体を ASP に実装し、通常の Windows タスク プランナー ジョブを介してトリガーしました。あなたの場合、サービスは毎分開始され、キューは次の 20 通のメールを提供します。さらに簡単な方法は、SQL Server ジョブを利用することです。SQL Server は、ローカルの SMTP サーバーにもメールを配信できます。

まだ行っていない場合は、SO の質問にも注意してください: ASP.NET で大量の電子メールを送信する最良の方法は何ですか?

于 2011-04-12T04:34:12.067 に答える