async private void SendReportEmail() { string reportToEmail = ""; try { var appSettings = ConfigurationManager.AppSettings; reportToEmail = appSettings["reportToEmail"]; } catch (ConfigurationErrorsException e) { return; } var mndEmail = new List <Mandrill.Models.EmailAddress>(); mndEmail.Add(new Mandrill.Models.EmailAddress(reportToEmail)); var message = new Mandrill.Models.EmailMessage() { To = mndEmail, FromEmail = FromEmail, FromName = FromName, Subject = "Daily Email Notifications Report", Html = report }; var msgRequest = new Mandrill.Requests.Messages.SendMessageRequest(message); //var msgRequest = new Mandrill.Requests.Messages.SendRawMessageRequest(report); await mandrill.SendMessage(msgRequest); Console.Write(report); }
private static async Task <string> SendEmail(EmailMessage emailMessage, EmailAddress emailAddress = null, Dictionary <string, string> dictionary = null, string emailTemplate = "") { // Sensitive information, needs to be properly encoded before deployment. Mandrill.MandrillApi api = new Mandrill.MandrillApi("rtHftXQYhGroTsPBzWBnbQ"); List <EmailResult> results = new List <EmailResult>(); if (String.IsNullOrEmpty(emailTemplate)) { Mandrill.Requests.Messages.SendMessageRequest request = new Mandrill.Requests.Messages.SendMessageRequest(emailMessage); results = await api.SendMessage(request); } else { if (dictionary != null) { foreach (var item in dictionary) { if (emailAddress != null) { emailMessage.AddRecipientVariable(emailAddress.Email, item.Key, item.Value); } } } Mandrill.Requests.Messages.SendMessageTemplateRequest request = new Mandrill.Requests.Messages.SendMessageTemplateRequest(emailMessage, emailTemplate); results = await api.SendMessageTemplate(request); } return(results.FirstOrDefault().Status.ToString()); }
public bool SendNotification(string toEmail, string bccEmail) { bool isDebugOnly = false; try { MailMessage mail = new MailMessage(); if (ConfigurationManager.AppSettings["DebugEmailAddress"] != "") { toEmail = ConfigurationManager.AppSettings["DebugEmailAddress"].ToString(); isDebugOnly = true; } if (!SendViaAPI) { //send via standard SMTP //split list of addresses string[] addresses = toEmail.Split(';'); foreach (string emailAddress in addresses) { mail.To.Add(emailAddress); } if (!String.IsNullOrEmpty(bccEmail) && !isDebugOnly) { addresses = bccEmail.Split(';'); foreach (string emailAddress in addresses) { mail.Bcc.Add(emailAddress); } } mail.From = new MailAddress(ConfigurationManager.AppSettings["DefaultSenderEmailAddress"], "openchargemap.org - automated notification"); mail.Subject = this.Subject; AlternateView htmlView = AlternateView.CreateAlternateViewFromString(MessageBody, null, "text/html"); mail.AlternateViews.Add(htmlView); SmtpClient smtp = new SmtpClient(); smtp.Host = System.Configuration.ConfigurationManager.AppSettings["SMTPHost"]; if (!String.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings["SMTPUser"])) { NetworkCredential basicCredential = new NetworkCredential(ConfigurationManager.AppSettings["SMTPUser"], ConfigurationManager.AppSettings["SMTPPwd"]); smtp.UseDefaultCredentials = false; smtp.Credentials = basicCredential; //smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis; //smtp.Port = 587; } //smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis; try { smtp.Send(mail); } catch (Exception) { ; ;// failed to send return false; } return true; } else { //send via bulk mailing api var apiKey = System.Configuration.ConfigurationManager.AppSettings["MandrillAPIKey"]; if (!String.IsNullOrEmpty(apiKey)) { MandrillApi api = new MandrillApi(apiKey); var message = new EmailMessage(); string[] addresses = toEmail.Split(';'); var emailToList = new List<EmailAddress>(); foreach (string emailAddress in addresses) { emailToList.Add(new EmailAddress(emailAddress)); } message.To = emailToList; if (!String.IsNullOrEmpty(bccEmail) && !isDebugOnly) { addresses = bccEmail.Split(';'); var bccToList = new List<EmailAddress>(); foreach (string emailAddress in addresses) { bccToList.Add(new EmailAddress(emailAddress)); } } message.FromEmail = ConfigurationManager.AppSettings["DefaultSenderEmailAddress"]; message.FromName = "Open Charge Map - Automated Notification"; message.Subject = this.Subject; message.AutoText = true; message.Html = this.MessageBody; var messageRequest = new Mandrill.Requests.Messages.SendMessageRequest(message); var messageTask = Task.Run(async () => { return await api.SendMessage(messageRequest); }); messageTask.Wait(); var result = messageTask.Result; if (result != null && result.Any()) { //optional notification result logging LogEvent(Newtonsoft.Json.JsonConvert.SerializeObject(new { eventDate = DateTime.UtcNow, result = result })); var r = result.First(); if (r.Status == EmailResultStatus.Invalid || r.Status == EmailResultStatus.Rejected) { return false; } } else { LogEvent(Newtonsoft.Json.JsonConvert.SerializeObject(new { eventDate = DateTime.UtcNow, result = result })); } return true; } } } catch (Exception ex) { LogEvent(Newtonsoft.Json.JsonConvert.SerializeObject(new { eventDate = DateTime.UtcNow, result = ex })); } return false; }
public bool SendNotification(string toEmail, string bccEmail) { bool isDebugOnly = false; try { MailMessage mail = new MailMessage(); if (ConfigurationManager.AppSettings["DebugEmailAddress"] != "") { toEmail = ConfigurationManager.AppSettings["DebugEmailAddress"].ToString(); isDebugOnly = true; } if (!SendViaAPI) { //send via standard SMTP //split list of addresses string[] addresses = toEmail.Split(';'); foreach (string emailAddress in addresses) { mail.To.Add(emailAddress); } if (!String.IsNullOrEmpty(bccEmail) && !isDebugOnly) { addresses = bccEmail.Split(';'); foreach (string emailAddress in addresses) { mail.Bcc.Add(emailAddress); } } mail.From = new MailAddress(ConfigurationManager.AppSettings["DefaultSenderEmailAddress"], "openchargemap.org - automated notification"); mail.Subject = this.Subject; AlternateView htmlView = AlternateView.CreateAlternateViewFromString(MessageBody, null, "text/html"); mail.AlternateViews.Add(htmlView); SmtpClient smtp = new SmtpClient(); smtp.Host = System.Configuration.ConfigurationManager.AppSettings["SMTPHost"]; if (!String.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings["SMTPUser"])) { NetworkCredential basicCredential = new NetworkCredential(ConfigurationManager.AppSettings["SMTPUser"], ConfigurationManager.AppSettings["SMTPPwd"]); smtp.UseDefaultCredentials = false; smtp.Credentials = basicCredential; //smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis; //smtp.Port = 587; } //smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis; try { smtp.Send(mail); } catch (Exception) { ;; // failed to send return(false); } return(true); } else { //send via bulk mailing api var apiKey = System.Configuration.ConfigurationManager.AppSettings["MandrillAPIKey"]; if (!String.IsNullOrEmpty(apiKey)) { MandrillApi api = new MandrillApi(apiKey); var message = new EmailMessage(); string[] addresses = toEmail.Split(';'); var emailToList = new List <EmailAddress>(); foreach (string emailAddress in addresses) { emailToList.Add(new EmailAddress(emailAddress)); } message.To = emailToList; if (!String.IsNullOrEmpty(bccEmail) && !isDebugOnly) { addresses = bccEmail.Split(';'); var bccToList = new List <EmailAddress>(); foreach (string emailAddress in addresses) { bccToList.Add(new EmailAddress(emailAddress)); } } message.FromEmail = ConfigurationManager.AppSettings["DefaultSenderEmailAddress"]; message.FromName = "Open Charge Map - Automated Notification"; message.Subject = this.Subject; message.AutoText = true; message.Html = this.MessageBody; var messageRequest = new Mandrill.Requests.Messages.SendMessageRequest(message); var messageTask = Task.Run(async() => { return(await api.SendMessage(messageRequest)); }); messageTask.Wait(); var result = messageTask.Result; if (result != null && result.Any()) { //optional notification result logging LogEvent(Newtonsoft.Json.JsonConvert.SerializeObject(new { eventDate = DateTime.UtcNow, result = result })); var r = result.First(); if (r.Status == EmailResultStatus.Invalid || r.Status == EmailResultStatus.Rejected) { return(false); } } else { LogEvent(Newtonsoft.Json.JsonConvert.SerializeObject(new { eventDate = DateTime.UtcNow, result = result })); } return(true); } } } catch (Exception ex) { LogEvent(Newtonsoft.Json.JsonConvert.SerializeObject(new { eventDate = DateTime.UtcNow, result = ex })); } return(false); }