この回答hereに基づいて、電子メールをキューに入れ、バックグラウンドタスクを実行して送信する必要があります。 ASP.NET-MVCとWCFのアーキテクチャではどうすればよいですか?asp.net-mvc/wcfアプリケーションでバックグラウンドコードを実行するには
- キュー(SQLサーバー)を作成するにはどうすればよいですか。
- バックグラウンドタスクを作成するにはどうすればよいですか?
この回答hereに基づいて、電子メールをキューに入れ、バックグラウンドタスクを実行して送信する必要があります。 ASP.NET-MVCとWCFのアーキテクチャではどうすればよいですか?asp.net-mvc/wcfアプリケーションでバックグラウンドコードを実行するには
この猫にはさまざまな方法でスキンを適用できます。重要な点は、電子メールの実際の送信が電子メールのキューイングと非同期であることです。
HTH、
Z
あなたのソリューションはMVCを使用しているという事実から独立していると思います。
これまで私がこれを実装してきた方法は、電子メールをデータベースに送信してから、Windowsサービスを使用してこれを処理する必要があるという事実を維持することです。
これを行う別の方法は、記憶媒体としてMSMQを利用することです。一般的に、MSMQはメッセージ転送メカニズムとしてのみデータを格納するために使用するべきではありませんが、この場合は確かにオプションです。
「キュー」を開発するという点では、何らかの理由で注文した配送が必要な場合は、データベーステーブルに「RequestedDTTM」列を置くだけで、要求された順序でメールを送信できます。
最後に、パフォーマンスを最大限に高めるために単純にマルチスレッドの電子メール送信者を実装することを検討します。 TPLを.NET 4.0で使用すると、これはかなり簡単になります。また、SmartThreadPoolライブラリ(codeplex.comで入手可能)のようなものを使用して、電子メールの送信者スレッドを管理することもできます。
あなたがリンクしている他の回答でも言及したように、あなたのUIはこの電子メール送信を行うべきではありません。
私は、これはそれを行うための素晴らしい方法ですわからないんだけど、それはNuGet上だという事実は、それが魅力的です。 :) http://www.hanselman.com/blog/NuGetPackageOfTheWeek2MvcMailerSendsMailsWithASPNETMVCRazorViewsAndScaffolding.aspx?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+ScottHanselman+%28Scott+Hanselman+-+ComputerZen.com%29 – RMD