0

さて、30分ごとにスケジュールされたアクティビティリマインダーを電子メールで送信しようとしています(アクティビティがスケジュールされている場合)、QuartzのものとMvcMailerワーカーが動作していますが、Quartz.Netを取得するのに問題がありますMvcMailMessages を使用します。

私が得ているエラーは次のとおりです。値はnullにすることはできません。パラメータ名: httpContext

どうすればこれについて行くことができますか?私は多くの検索を行いましたが、機能しているものを見つけることができません。Global.asax.cs の Application_Start() でスケジューラを開始しています。

デフォルトの電子メールを使用するように戻して、何らかの方法ですべての Htmlz を使用してメッセージを別の形式にすることもできます。しかし、私はむしろこれに時間を費やしたくありません。

どんな助けでも大歓迎です。

4

1 に答える 1

1

私は似たようなことをしました。しかし、Quartz.NET を使用して、電子メールを送信できるコントローラー URL を「ポップ」しました。

Quartz.Net でスケジュールできるジョブとトリガーを用意します。

メールを送信できるコントローラーを MVC サイトに作成します。EmailController のようなもの

送信する電子メールの種類ごとに ActionMethod を用意します。

EmailController.SendWelcomeEmail(int id)

アクション メソッドで、データベースにクエリを実行し、任意のロジックを実行し、最終的に MVCMailer を呼び出して電子メールを送信します。

これを Quartz.Net から呼び出すには、 WebClient() を使用するだけです

var client = new WebClient();
client.DownloadString("yourwebsitehere/Email/SendWelcomeEmail/99999");

ServicePointManager.DefaultConnectionLimitスケーリングの問題が発生した場合は、 を高い値に設定することを忘れないでください。

http://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.defaultconnectionlimit(v=vs.110).aspx

これがあなたを導くのに役立つことを願っています。重要なポイントは、ここには 2 つのプロセスが含まれているということです。あなたのウェブサイトと、Quartz.Net をホストする二次プロセス。基本的に、HttpContext が再び有効になるように、asp.net パイプラインを介して戻る要求を取得する必要があります。

MvcMailer を介して適切に非同期でメールを送信することについての私の回答には、いくつかの追加情報があります。

非同期電子メールを送信する

于 2014-02-10T22:43:42.787 に答える