Ejemplo n.º 1
0
        /// <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));
 }
Ejemplo n.º 3
0
        public void EmailSendAsyncTest()
        {
            var task = EmailSendManager.EmailSendAsync("test", "*****@*****.**", "test");

            task.Wait();
        }