public void SendMails(ObservableCollection <Common.Recipient> emails) //проходим по БД и вызываем SendMail { bool flag = true; //ставлю дефолт истина т.к. априори прога должна отработать без проблем string except = string.Empty; foreach (Common.Recipient email in emails) { Task.Factory.StartNew(() => SendMail(email.Address, email.Name, ref flag, ref except)); //адрес и нэйм для отправки писем, //флаг и строку для проверки как отработано //SendMail(email.Address, email.Name,ref flag, ref except); //мононопоточное выполнение } if (flag == true)//если все норм единожды выскочит окно что все гуд { View.SendEndWindow sendEnd = new View.SendEndWindow(); sendEnd.ShowDialog(); } else if (flag == false)//если не норм то обложит матами, но единожды xD { View.ErorrWindow erorrWindow = new View.ErorrWindow(); erorrWindow.NotSend.Text = "Ошибка при отправке письма \n" + except.ToString(); erorrWindow.ShowDialog(); } }
private async Task SendMailAsync(string mail, string name) // Отправка email конкретному адресату { using (MailMessage mm = new MailMessage(strLogin, mail)) { mm.Subject = strSubject; mm.Body = strBody + "\nПисьмо от " + DateTime.Now; mm.IsBodyHtml = false; SmtpClient sc = new SmtpClient(strSmtp, iSmtpPort); sc.EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential(strLogin, strPassword); try { await sc.SendMailAsync(mm).ConfigureAwait(false); View.SendEndWindow sendEnd = new View.SendEndWindow(); sendEnd.ShowDialog(); } catch (Exception ex) { View.ErorrWindow erorrWindow = new View.ErorrWindow(); erorrWindow.ShowDialog(); MessageBox.Show("Невозможно отправить письмо " + ex.ToString()); } } }