我有完整的代码,可以将每日邮件发送到用户的过期邮件。我对代码的描述如下:
Global.asax:
void Application_Start(object sender, EventArgs e) {System.Timers.Timer myTimer = new System.Timers.Timer(); double inter = (double)GetNextInterval(); myTimer.Interval = inter; myTimer.AutoReset = true; myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed); myTimer.Enabled = true; }
private double GetNextInterval(){
string timeString; timeString = "12:00 AM"; DateTime t = DateTime.Parse(timeString); TimeSpan ts = new TimeSpan(); int x; ts = t - System.DateTime.Now; if (ts.TotalMilliseconds < 0) { ts = t.AddDays(1) - System.DateTime.Now; } return ts.TotalMilliseconds; }
public void myTimer_Elapsed(object source, System.Timers.ElapsedEventArgs e) {
// My Mail Code }
此代码适用于首次发送邮件,但我希望每天发送邮件。
怎么可能?
答案 0 :(得分:2)
使用任务计划程序创建一个控制台应用程序,该应用程序每天发送电子邮件并安排任务运行您的控制台应用程序。
答案 1 :(得分:0)
您也可以为.aspx文件创建计划任务。它将打开浏览器并发送邮件,而不是必须创建另一个计划任务来关闭它。
以下是示例:
https://mohammednv.wordpress.com/2008/01/08/how-to-create-scheduled-tasks-for-aspx-files/
答案 2 :(得分:0)
您可以使用Quartz.NET
在代码端安排任何程序但是有一个问题。如果一个asp.net应用程序保持不活动状态(没有收到任何请求),它将从IIS进入休眠状态。
所以你有两个选择。 Change IIS Settings让您的应用池始终保持清醒状态 或poke your application with dummy request s以防止其睡眠的任何方法
我的建议和实施如下,我认为这是最专业的做法。
将您的及时任务公开为wcf服务。
开发一个运行Quartz的Windows服务,并及时调用这些wcf服务。
专业人员可以将业务逻辑代码保存在一个位置,并且它也适用于服务器场方案