我做过类似的事情。但我只是使用 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
希望这有助于指导你一些。关键要点是这里涉及两个过程。您的网站,然后是托管 Quartz.Net 的辅助进程。本质上,您需要让请求通过 asp.net 管道返回,以便您的 HttpContext 再次有效。
在我的回答中可以找到一些额外的东西,关于通过 MvcMailer 正确异步发送电子邮件:
发送异步电子邮件