示例#1
0
        /// <summary>
        /// Sending Email through Mandril API (Using Mandril Templates)
        /// </summary>
        /// <param name="fromEmail"></param>
        /// <param name="fromName"></param>
        /// <param name="toMails"></param>
        /// <param name="subject"></param>
        /// <param name="templateName"></param>
        /// <param name="MergeVariables"></param>
        /// <returns></returns>
        public static List <EmailResult> SendMail(string fromEmail, string fromName, List <string> toMails, string subject, string templateName, Dictionary <string, dynamic> MergeVariables)
        {
            try
            {
                var api = new MandrillApi(Config.Key);

                var email = new EmailMessage()
                {
                    FromEmail = fromEmail,
                    FromName  = fromName,
                    Subject   = subject,
                };
                email.Merge         = true;
                email.MergeLanguage = "mailchimp";
                //email.Headers.Add("Reply-To", "*****@*****.**");

                foreach (var item in MergeVariables)
                {
                    email.AddGlobalVariable(item.Key, item.Value);
                }


                var to = toMails.Select(mailTo => new EmailAddress(mailTo)).ToList();
                email.To = to;

                // Send email
                var smReq  = new SendMessageTemplateRequest(email, templateName);
                var output = api.SendMessageTemplate(smReq).Result;
                return(output);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#2
0
        public async Task SendEmailTemplateAsync(string emailAddress, string template, Dictionary <string, string> templateParameters)
        {
            var emailMessage = new EmailMessage();

            emailMessage.To = new[] { new EmailAddress(emailAddress) };

            foreach (var item in templateParameters)
            {
                emailMessage.AddGlobalVariable(item.Key, item.Value);
            }

            var messageTemplateRequest      = new SendMessageTemplateRequest(emailMessage, template);
            List <EmailResult> emailResults = await mandrillApi_.SendMessageTemplate(messageTemplateRequest);

            foreach (var item in emailResults)
            {
                if (item.Status == EmailResultStatus.Rejected)
                {
                    throw new ServerErrorException(
                              $"Sending email template {template} to {item.Email} with parameters: {string.Join(",", templateParameters)} failed with reason: {item.RejectReason}");
                }

                if (item.Status == EmailResultStatus.Invalid)
                {
                    throw new InvalidArgumentException(
                              $"Sending email template {template} to {item.Email} with parameters: {string.Join(",", templateParameters)} is invalid");
                }
            }
        }
示例#3
0
        /// <summary>
        ///   Send a new transactional message through Mandrill using a template.
        ///   <see cref="https://mandrillapp.com/api/docs/messages.JSON.html#method=send-template">Mandrill API Documentation</see>
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>The <see cref="List{T}" />.</returns>
        public async Task <List <EmailResult> > SendMessageTemplate(SendMessageTemplateRequest request)
        {
            string path = "messages/send-template.json";

            List <EmailResult> resp = await Post <List <EmailResult> >(path, request).ConfigureAwait(false);

            return(resp);
        }
示例#4
0
        public async Task <IActionResult> SendKeysViaEmail(string listId)
        {
            var existingKeys = await new AccessKey().RetrieveAllAsync();

            var mailChimp = new MailChimpManager("3f4978dbd632a4471650eeeebe681ce3-us12");
            var mandrill  = new MandrillApi("DQCr_ZMk5Ga5slGv9uWGPQ");

            List mailChimpList;

            try { mailChimpList = await mailChimp.Lists.GetAsync(listId); }
            catch (MailChimpException) { return(ErrorView($"MailChimp list with ID {listId} doesn't exist.")); }

            var resultsList = new List <string> {
                $"Scanned MailChimp list {mailChimpList.Name} and sent an access key for each member:"
            };

            var listMembers = await mailChimp.Members.GetAllAsync(listId);

            foreach (var listMember in listMembers)
            {
                var accessKey = await new AccessKey().AddAsync(existingKeys, listMember.EmailAddress);
                existingKeys.Add(accessKey);

                var emailMessage = new EmailMessage()
                {
                    To = new List <EmailAddress> {
                        new EmailAddress(listMember.EmailAddress)
                    }
                };
                var accessKeyContent = new TemplateContent()
                {
                    Name = "acces-key", Content = accessKey.Id
                };
                var sendRequest = new SendMessageTemplateRequest(emailMessage, "Access Key", new List <TemplateContent> {
                    accessKeyContent
                });

                var sendResults = await mandrill.SendMessageTemplate(sendRequest);

                var result = sendResults.First();
                resultsList.Add($" - Sent key {accessKey.Id} to {result.Email} with status {result.Status}. "
                                + (result.Status != EmailResultStatus.Sent ? $"Reject reason: {result.RejectReason}" : string.Empty));
            }

            return(View("SendAccessKeysResult", resultsList));
        }