我做了類似的事情。但我只是使用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
設置爲高值。
http://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.defaultconnectionlimit(v=vs.110).aspx
希望這有助於引導你一些。關鍵是,這裏涉及2個過程。您的網站,然後是主持Quartz.Net的輔助進程。基本上你需要獲得通過asp.net pipline的請求,以便你的HttpContext再次有效。
一些額外的東西可以在這裏我的回答可以找到有關正確異步通過MvcMailer發送電子郵件:
Send async e-mails
您可以發佈相應的代碼? – rae1
我相信Quartz.net是在自己的線程上運行。所以你的HttpContext是空的,因爲它沒有在運行MVC的線程上運行。你究竟想要完成什麼?爲什麼你想要HttpContext格式化電子郵件? –