0

人々の詳細を記録し、マスコミュニケーションの送信を可能にする連絡先管理/通信システムを作成しました。

ただし、電子メールが送信されているときに、次の例外が発生することがあります。

System.Threading.ThreadAbortException: Thread was being aborted

ASP.NET を介して大量の電子メールを送信する最良の方法は何ですか?

私が探しているのは、すべてを ASP.NET に保持するアプローチです。

電子メールをデータベースに保存し、別の .net コンソール アプリケーション/Windows サービスで送信する必要があるのではないかと感じています。ただし、追加の開発オーバーヘッドと時間がないため、これは検討したい最後のオプションです。

4

3 に答える 3

4

.net から大量の電子メール ブロードキャストを行う信頼できる方法は、仲介者なしではありません。

これが意味することは、電子メールはデータベースまたはその他の永続ストレージのキューに入れる必要があるということです。次に、キューの監視とブロードキャスト リクエストの処理を担当する別のアプリ (コンソール、サービスなど) が必要です。

次に、コードから直接送信しないでください。代わりに、実際の受信者に再ブロードキャストするために、管理下にあるローカル メール サーバーに電子メールを送信します。スパム検出メカニズム (グレーリストなど) のせん断数は、メッセージの送信、グレーリスト拒否の取得、15 分 (または長い時間) 待ってから、再度送信して確認するために、途方もない時間を費やすことを意味します。それは通過します。

実際のメール サーバーを経由している場合でもキューに入れる理由は、ローカル メール サーバーが過負荷にならないようにするためです。

.net からメールを送信することは、特にすべての受信者が社内にいる場合は特に、これらの 1 回限りの場合には問題ありません。ただし、信頼性を持って一般に発信する必要がある場合はいつでも、いわば「成長」する必要があります。

于 2011-02-23T15:54:02.773 に答える
2

しないでください。ASP.net リクエストは、タイムアウトを超えた場合、IIS によってシャットダウンされた場合などに IIS によって終了される可能性があります。

この場合、メールを送信したい場合は、それを実行できる外部プロセスを生成する必要があります。それらを送信する方法を知っている小さな実行可能なコンソール アプリを作成し、必要に応じて Web ページで実行することができます。

于 2011-02-23T15:45:48.160 に答える
2

Service Broker を確認してから、キューから別のアプリケーションをプルしてメールを送信します。

于 2011-02-23T15:31:16.620 に答える