MvcMailer和Quartz.Net httpContext为null
好的,所以我试图通过电子邮件每30分钟发送一次计划的活动提醒(如果他们安排了一个活动),而且我有Quartz工作和MvcMailer工作人员,我无法让Quartz.Net使用MvcMailMessages。MvcMailer和Quartz.Net httpContext为null
我得到的错误是:值不能为空。参数名称:httpContext
我该怎么办?我做了很多搜索,但无法找到任何有效的工具。我有我的调度程序开始在Global.asax.cs的Application_Start()
我可以回到使用默认电子邮件,然后以不同的方式格式化我的消息与所有Htmlz!但我宁愿不花时间这样做。
任何帮助将greaaatly赞赏。
我做了类似的事情。但我只是使用Quartz.NET来“弹出”一个控制器的URL,然后可以发送电子邮件。
有一个工作和一个触发器,你可以在Quartz.Net中进行安排。
在您的MVC网站上创建一个可以发送您的电子邮件的控制器。有点像EmailController
有一个ActionMethod你想发送每个电子邮件类型。
EmailController.SendWelcomeEmail(int id)
在你的操作方法,查询数据库,做任何逻辑,并最终调用您MVCMailer发送出去的电子邮件。
从Quartz.Net调用这个你可以使用Web客户端()
var client = new WebClient();
client.DownloadString("yourwebsitehere/Email/SendWelcomeEmail/99999");
如果你最终不得不扩展性问题,记得到ServicePointManager.DefaultConnectionLimit
设置为高值。
希望这有助于引导你一些。关键是,这里涉及2个过程。您的网站,然后是主持Quartz.Net的辅助进程。基本上你需要获得通过asp.net pipline的请求,以便你的HttpContext再次有效。
一些额外的东西可以在这里我的回答可以找到有关正确异步通过MvcMailer发送电子邮件:
您可以发布相应的代码? – rae1
我相信Quartz.net是在自己的线程上运行。所以你的HttpContext是空的,因为它没有在运行MVC的线程上运行。你究竟想要完成什么?为什么你想要HttpContext格式化电子邮件? –