/// <summary> /// Get items from db and send emails /// </summary> /// <param name="query"></param> /// <param name="email"></param> /// <returns></returns> public static Task GetItemsAndSendEmailAsync(IEnumerable <CriminalPerson> query, string email) { return(Task.Run(async() => { try { //get query items from db var items = query.ToArray(); //make pdf attachments var attachments = items.Select(x => PdfSharpModule.MakePdf(x)).ToList(); //get MaxItemsPerRequest from config file int maxItems = 0; if (!(int.TryParse(System.Configuration.ConfigurationManager.AppSettings["MaxItemsPerEmail"], out maxItems) && maxItems > 0)) { maxItems = MaxItemsPerEmail; } //async send email with attachments (max N items in email) if (!attachments.Any()) { await EmailSendManager.EmailSendAsync("No matches", email, "Criminal persons"); } else { int part = 1; int parts = attachments.Count / maxItems; if (attachments.Count % maxItems > 0) { parts++; } while (attachments.Any()) { var attachmentsInEmail = attachments.Take(maxItems).ToArray(); //delete from whole collection for (int i = 0; i < attachmentsInEmail.Length; i++) { attachments.Remove(attachmentsInEmail[i]); } await EmailSendManager.EmailSendAsync(String.Format("Search results: {0}, part {1} of {2}", items.Length, part++, parts), email, "Criminal persons", attachmentsInEmail); } } logger.Info("Succesfully sent emails to {0} with {1} attachments", email, items.Length); } catch (Exception ex) { //log errors logger.Error(ex); } })); }
public Task SendAsync(IdentityMessage message) { return(EmailSendManager.EmailSendAsync(message.Body, message.Destination, message.Subject)); }
public void EmailSendAsyncTest() { var task = EmailSendManager.EmailSendAsync("test", "*****@*****.**", "test"); task.Wait(); }