如何在 ASP.NET 中使用 Windows 任务计划程序

How to use Windows task Scheduler in ASP.NET

我正在尝试在 Window 任务计划程序中使用 ASP.NET。我想在特定时间发送电子邮件。 但是 ASP.NET 不是 运行 作为 EXE,它有一个动态 ip 地址。 我不知道在 ASP.NET 中使用 Window Task Scheduler。 你能给我任何解决方案吗?

void SendEmail()
{
    //get the data from database
    DataTable data = GetData();
    DataTable email_data = GetEmailData();

    //set DataTable Name of Excel Sheet
    data.TableName = "NSOList";

    //Create a New Workook
    using (XLWorkbook wb = new XLWorkbook())
    {
        //Add the DataTable as Excel Workhseet
        wb.Worksheets.Add(data);

        using (MemoryStream memoryStream = new MemoryStream())
        {
            //Save the Excel Workbook to MemoryStream
            wb.SaveAs(memoryStream);

            //Convert MemoryStream to Byte array
            byte[] bytes = memoryStream.ToArray();
            memoryStream.Close();

            //body with embedded image
            AlternateView body = AlternateView.CreateAlternateViewFromString
                ("Hi <br><br> <img src=cid:example>", null, "text/html");

            //create the LinkedResource (embedded image)
            LinkedResource image = new LinkedResource("c:\example.png");
            image.ContentId = "example";

            //add the LinkedResource to the appropriate view
            body.LinkedResources.Add(image);


            String from = "abcd@abcd.net";
            //bring Email data
            for (int i = 0; i < email_data.Rows.Count; i++)
            {
                String to = email_data.Rows[i][0].ToString();


                using (MailMessage mm = new MailMessage(from, to))
                {

                    SmtpClient smtp = new SmtpClient();
                    mm.Subject = "List";

                    mm.AlternateViews.Add(body);
                    mm.Attachments.Add(new Attachment(new MemoryStream(bytes), "NSOList.xlsx"));
                    mm.IsBodyHtml = true;

                    smtp.Host = "smtp.gmail.com";
                    smtp.EnableSsl = true;
                    System.Net.NetworkCredential credentials = new System.Net.NetworkCredential();
                    credentials.UserName = "abcd@gmail.com";
                    credentials.Password = "abcd";
                    smtp.UseDefaultCredentials = true;
                    smtp.Credentials = credentials;
                    smtp.Port = 587;
                    smtp.Send(mm);
                }
            }
        }
    }


}

它应该是一个包含您的代码的控制台应用程序。在 bin 文件夹中,它将创建一个 .exe 文件,您需要在 windows 任务计划程序中使用它。 以下 link 为您提供了有关如何在 windows 任务计划程序中创建任务的分步过程。

http://www.digitalcitizen.life/how-create-task-basic-task-wizard

您应该使用像 Quartz.Net 这样的任务计划程序。它允许您将 类 定义为 Jobs,然后根据计划执行这些作业。我目前正在一些内部项目中使用它,它的性能与宣传的一样。

已编辑

检查answers here