2017-05-25 1 views
0

Ich versuche, ASP.NET im Windows Taskplaner zu verwenden. Ich möchte die E-Mail zu einem bestimmten Zeitpunkt senden. Aber ASP.NET wird nicht als EXE ausgeführt, es hat eine dynamische IP-Adresse. Ich habe keine Ahnung, Window Task Scheduler in ASP.NET zu verwenden. Können Sie mir irgendwelche Lösungen dafür geben?Wie Windows Taskplaner in ASP.NET verwenden

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 = "[email protected]"; 
      //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 = "[email protected]"; 
        credentials.Password = "abcd"; 
        smtp.UseDefaultCredentials = true; 
        smtp.Credentials = credentials; 
        smtp.Port = 587; 
        smtp.Send(mm); 
       } 
      } 
     } 
    } 


} 
+0

Sie müssen eine neue Aufgabenaktion im Windows-Aufgabenplaner erstellen, wenn Sie eine E-Mail zu einem bestimmten Zeitpunkt senden möchten – ISHIDA

Antwort

0

Sie sollten einen Taskplaner wie Quartz.Net verwenden. Sie können Klassen als Jobs definieren und diese Jobs dann nach einem Zeitplan ausführen. Ich verwende es derzeit in einigen internen Projekten und es funktioniert wie angekündigt.

EDITED

Überprüfen Sie die answers here.

Verwandte Themen