我们从我们的 ASP.NET MVC 3 Razor Web 应用程序发送电子邮件。
目前我们正在使用 ActionMailer.NET。
我看过 MvcMailer。
两者的问题是它们需要一个 Http Context 来执行。
这个问题是我想异步发送电子邮件。现在我知道您可以异步执行实际发送(例如 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。