ASP.NET MVC 3 Razor Web アプリケーションからメールを送信します。
現在、ActionMailer.NET を使用しています。
私はMvcMailerを見てきました。
両方の問題は、実行するために Http コンテキストが必要なことです。
これに関する問題は、メールを非同期で送信したいということです。これで、実際の送信 (SMTP 呼び出しなど) を非同期で実行できることがわかりましたが、電子メールを送信するプロセス全体を非同期にしたいです。
public ActionResult DoSomething(Something something)
{
_db.Save(something);
Task.Factory.StartNew(() => {
new MailController().DoSomething().Send(something);
});
return RedirectToAction("Index");
}
「DoSomething」メソッドでは、データベースに再度クエリを実行したり、他のことを実行したりします....これをすべて非同期にしたいので、単に実行するのではなく、呼び出し全体がタスクにラップされます.SendAsync()
。それが理にかなっていることを願っています。
上記の例は ActionMailer であり、生成されたスレッドで HTTP コンテキストがなくなるため、壊れます。
これを機能させる方法、またはHTTPコンテキストの存在に依存しない別のパッケージを知っている人はいますか?
HTTP コンテキストが必要な理由はわかりません。ここではリクエスト ルーティングはなく、ファイル システム上のビューを HTML に解析するだけです。