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);
        }
Esempio n. 2
0
        protected async Task SendMandrillEmail(List <string> toAddress, string subject, string templateName, Dictionary <string, string> globalMergeVariables = null)
        {
            var email = new Mandrill.Models.EmailMessage();

            email.To      = toAddress.Select(s => new Mandrill.Models.EmailAddress(s));
            email.Subject = subject;

            if (globalMergeVariables != null)
            {
                email.Merge         = true;
                email.MergeLanguage = "mailchimp";
                foreach (var kvp in globalMergeVariables)
                {
                    email.AddGlobalVariable(kvp.Key, kvp.Value);
                }
            }

            var request = new Mandrill.Requests.Messages.SendMessageTemplateRequest(email, templateName);

            var api    = new Mandrill.MandrillApi(MandrillApiKey);
            var result = await api.SendMessageTemplate(request);
        }
Esempio n. 3
0
        public async Task<bool> SendAsync(EmailMessage email, bool deleteAttachmentes, params string[] attachments)
        {
            var config = this.Config as Config;

            if (config == null)
            {
                email.Status = Status.Cancelled;
                return false;
            }

            try
            {
                email.Status = Status.Executing;


                var message = new Mandrill.Models.EmailMessage();
                message.RawTo = email.SentTo.Split(',').ToList();
                message.FromEmail = email.FromEmail;
                message.FromName = email.FromName;
                message.Subject = email.Subject;
                if (email.IsBodyHtml)
                {
                    message.Html = email.Message;
                }
                else
                {
                    message.Text = email.Message;
                }
                message = AttachmentHelper.AddAttachments(message, attachments);
                var sendMessageRequest = new SendMessageRequest(message);

                var api = new MandrillApi(config.ApiKey);
                var result = await api.SendMessage(sendMessageRequest);

                var status = result.First().Status;
                // Verify
                if (status == Mandrill.Models.EmailResultStatus.Invalid || status == Mandrill.Models.EmailResultStatus.Rejected)
                {
                    email.Status = Status.Failed;
                }
                else if (status == Mandrill.Models.EmailResultStatus.Queued || status == Mandrill.Models.EmailResultStatus.Scheduled)
                {
                    email.Status = Status.Executing;
                }
                else if (status == Mandrill.Models.EmailResultStatus.Sent)
                {
                    email.Status = Status.Completed;
                }
                return true;
            }
            // ReSharper disable once CatchAllClause
            catch (Exception ex)
            {
                email.Status = Status.Failed;
                Log.Warning(@"Could not send email to {To} using SendGrid API. {Ex}. ", email.SentTo, ex);
            }
            finally
            {
                if (deleteAttachmentes)
                {
                    FileHelper.DeleteFiles(attachments);
                }
            }

            return false;
        }