2016-08-04 12 views
0

Hier ist mein CodeWie kann SendGrid ohne Blockierung ausgeführt werden?

public static void sendEmail(string sendto, string subject, string template, Object model) 
{ 
    SendGridAPIClient sg = new SendGridAPIClient(ConfigurationManager.AppSettings["SendGridAPIKey"]); 
    Email from = new Email(ConfigurationManager.AppSettings["EmailSender"]); 
    Email to = new Email(sendto); 
    var templateFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "EmailTemplates"); 
    var tpl = File.OpenText(templateFolder + "\\" + template).ReadToEnd(); 
    string textbody = Engine.Razor.RunCompile(tpl, template, null, model); 
    Content content = new Content("text/plain", textbody); 
    Mail mail = new Mail(from, subject, to, content); 
    dynamic response = sg.client.mail.send.post(requestBody: mail.Get()); 
} 

Dies funktioniert in vielen Orten genannt wird. Wie kann ich diese Funktion ausführen, ohne die verschiedenen Stellen, an denen diese Funktionen aufgerufen werden, zu blockieren?

Antwort

0

können Sie verwenden HostingEnvironment.QueueBackgroundWorkItem

using System.Web.Hosting; 

HostingEnvironment.QueueBackgroundWorkItem((ct) => sendEmail(sendto, subject, template, model)); 
+0

Danke, aber scheinen keine E-Mails aus irgendeinem Grund jetzt zu bekommen, obwohl @rukiman – rukiman

+0

gute API Rückkehr sieht sich damit Ihre Frage beantwortet? – Hendry