public async Task EmailSendAsync(string aFrom, string aTo, string aSubject, string aMessage, IEnumerable<string> aAttachments = null, bool aReadConfirmation = false, bool aReceiptConfirmation = false) { using (var mail = new MailMessage()) { if (aReadConfirmation) mail.Headers.Add("Disposition-Notification-To", aFrom); if (!IsEmailValid(aFrom)) throw new ArgumentException("Sender address \"{aFrom}\" is not valid"); mail.From = new MailAddress(aFrom.Trim()); if (!IsEmailValid(aTo)) throw new ArgumentException("Recipient address \"{aTo}\" is not valid"); mail.To.Add(aTo.Trim()); mail.Subject = aSubject; mail.Body = aMessage; if (aAttachments != null) foreach (var attachment in aAttachments) mail.Attachments.Add(new Attachment(attachment)); if (aReceiptConfirmation) mail.DeliveryNotificationOptions = DeliveryNotificationOptions.Delay | DeliveryNotificationOptions.OnFailure | DeliveryNotificationOptions.OnSuccess; using (var smtpClient = new SmtpClient()) await smtpClient.SendMailExAsync(mail); } }