2017-05-25 1 views
0

J'essaie d'utiliser ASP.NET dans Windows Task Scheduler. Je veux envoyer l'email à un moment précis. Mais ASP.NET n'est pas exécuté en tant qu'EXE, il possède une adresse IP dynamique. Je n'ai aucune idée d'utiliser Window Task Scheduler dans ASP.NET. Pouvez-vous me donner des solutions pour cela?Comment utiliser le planificateur de tâches Windows dans ASP.NET

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

Vous devez créer une nouvelle tâche dans le planificateur de tâches Windows si vous souhaitez envoyer un e-mail à un moment donné – ISHIDA

Répondre

0

Vous devez utiliser un planificateur de tâches comme Quartz.Net. Il vous permet de définir des classes en tant que Jobs, puis d'exécuter ces tâches en fonction d'une planification. Je l'utilise actuellement dans certains projets internes et il fonctionne comme annoncé.

ÉDITÉ

Vérifiez la answers here.

0

Ce devrait être une application de console avec votre code dedans. Dans le dossier bin, il créera un fichier .exe que vous devrez utiliser dans le planificateur de tâches Windows. Le lien suivant vous fournit une procédure étape par étape sur la création d'une tâche dans le planificateur de tâches Windows.

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