コード例 #1
0
        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);
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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;
        }
コード例 #4
0
        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);
        }