gpt4 book ai didi

asp.net-mvc-3 - 是否有不需要 HTTP 上下文的 MVC 电子邮件包?

转载 作者:行者123 更新时间:2023-12-04 02:26:40 25 4
gpt4 key购买 nike

我们从 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 上下文 - 这里没有请求路由,只是将文件系统上的 View 解析为 HTML。

最佳答案

您可以结帐postal它使用 RazorViewEngine:

public class HomeController : Controller
{
public ActionResult Index()
{
Task.Factory.StartNew(() =>
{
Thread.Sleep(5000);
dynamic email = new Email("Example");
email.To = "webninja@example.com";
email.FunnyLink = "some funny link";
email.Send();
});

return View();
}
}

和内部 ~/Views/Emails/Example.cshtml :
To: @ViewBag.To
From: lolcats@website.com
Subject: Important Message

Hello,
You wanted important web links right?
Check out this: @ViewBag.FunnyLink

还要确保您已阅读并理解 dangers of implementing background tasks in ASP.NET applications在将您的应用程序投入生产之前。

关于asp.net-mvc-3 - 是否有不需要 HTTP 上下文的 MVC 电子邮件包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10811604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com