使用ASP.NET

时间:2015-12-14 06:03:38

标签: c# asp.net sendmail

我有完整的代码,可以将每日邮件发送到用户的过期邮件。我对代码的描述如下:

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 }

此代码适用于首次发送邮件,但我希望每天发送邮件。

怎么可能?

3 个答案:

答案 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服务。

专业人员可以将业务逻辑代码保存在一个位置,并且它也适用于服务器场方案