/// <summary> /// Sends a mail based on off SMTP settings in .config /// </summary> /// <param name="mailToAddresses"></param> /// <param name="title"></param> /// <param name="contents"></param> /// <param name="legal"></param> /// <param name="callback"></param> /// <param name="callbackData"></param> /// <param name="addressseparator"></param> /// <returns>Email addresses and their send status (true or false)</returns> public KeyValuePair <String, Boolean> Send(System.Collections.Generic.List <string> mailToAddresses, string title, string contents, FooterLegal legal, SendCompletedCallbackDelegate callback, string callbackData, char addressseparator = ';') { var returnValue = new KeyValuePair <String, bool>(); var client = new SmtpClient(); var footer = string.Empty; var toAddresses = new List <string>(); try { // Never batch send for legal reasons. Have to put email in the footer of every email foreach (var emailAddress in mailToAddresses) { if (emailAddress.IsEmail(false)) { // Will get 'from, etc' from .config file var OutgoingMail = new MailMessage(); OutgoingMail.To.Add(new MailAddress(emailAddress)); OutgoingMail.Subject = title; OutgoingMail.Body = contents + (legal.PublishFooter ? legal.ToFooter() : string.Empty); OutgoingMail.IsBodyHtml = true; OutgoingMail.Priority = MailPriority.Normal; client.SendCompleted += SendCompletedCallback; client.Send(OutgoingMail); } } } catch { throw; } finally { client.Dispose(); } // Return success/failre return(returnValue); }