3

私のクライアントのカスタム構築された CRM について、ユーザー (技術者) に、マークされたケースへの変更が電子メールで通知されるようにしたいと考えています。

これにより、ユーザーとケースの間の単純なサブスクリプション マッピング テーブルと、ロギング メソッド内からケースに変更が加えられるたびに自動メールが送信されることが保証されます。

ロギング方法を滞らせずに、サブスクライブしているユーザーに 10 ~ 100 通のメールを送信するにはどうすればよいですか? 私の SMTP サーバーは LAN 上のピアにあるため、送信は迅速に行われるはずですが、理想的には、これは外部のキューイング プロセスによって処理される必要があります。

cron ジョブで未処理のメールを 10 分ごとに送信することもできますが、この特定のクライアントの場合は非常に時間的制約があり、即時通知 (メールが可能な限り即時) が優れています。

ログ記録方法を滞らせずに、ASP.NET MVC 内から一括通知メールを送信するにはどうすればよいですか?

4

2 に答える 2

4

2007 年に、Web サーバーが突然フリーズして 503 エラーの送信を開始し、数分後に戻ってくるケースを調査するように依頼されました。簡単に言えば、サーバーをブロックしている電子メールを送信していたことが最後に判明しました(いくつかの悪いコードに加えて)。

基本的に、Microsoft の SMTP サーバーはシングルスレッド サービスとして実装されています。最後に確認しました。これは、リクエストを処理するすべての貴重な ASP.NET スレッドが、それほど緊急ではない電子メールを送信するために、シングル スレッド モノリシック アプリケーションのキューに入れられる必要があることを意味します。Web サイトを電子メールの送信から分離する必要があります。これは誰もが行っていることであり、それには正当な理由があります。

メールをキューに書き込み、メールの読み取りと送信のプロセスを実行します。

于 2011-01-14T10:50:34.820 に答える
2

ASP.NET アプリケーションから電子メールを送信することは、貴重なサーバー リソースを独占する可能性があるため、お勧めできません。より良い解決策は、Windows サービスをセットアップしてこのタスクを実行するか、Windows スケジューラで実行するようにスケジュールできるコンソール アプリケーションを作成することです。Quartz.NETは、ジョブのスケジュールを可能にする優れたソリューションです。

これらの電子メール送信を特定のコントローラー アクション内からトリガーする場合は、非同期で呼び出すことができる別の WCF サービスを使用することもできます。

于 2011-01-14T10:47:25.407 に答える