public static IList<MandrillSendMessageResponse> customSend(object model, MandrillTemplates template)
        {
            var api = new MandrillApi("IRWMe1g1dCTrG6uOZEy7gQ");
            var message = new MandrillMessage();
            message.FromEmail = "*****@*****.**";
            message.AddTo("*****@*****.**");
            message.ReplyTo = "*****@*****.**";
            foreach (var prop in model.GetType().GetProperties())
            {
                var value = prop.GetValue(model, null);
                if(value != null)
                    message.AddGlobalMergeVars(prop.Name, prop.GetValue(model, null).ToString());
            }
            string templateName = string.Empty;

            switch (template)
            {
                case MandrillTemplates.Lead: templateName = "customer-lead"; break;
                case MandrillTemplates.Invoice: templateName = "customer-invoice"; break;
                default: break;
            }

            if (!string.IsNullOrEmpty(templateName))
            {
                var result = api.Messages.SendTemplate(message, templateName);
                return result;
            }
            return null;
        }
示例#2
0
 public void SendSellerMessage(int messageId, string pathToTemplates, string pathToMedia)
 {
     var record = _settingsService.GetAllSettings().List().FirstOrDefault();
     var api = new MandrillApi(record.ApiKey);
     var mandrillMessage = new MandrillMessage() { };
     var message = _messageService.GetMessage(messageId);
     mandrillMessage.MergeLanguage = MandrillMessageMergeLanguage.Handlebars;
     mandrillMessage.FromEmail = message.Sender;
     mandrillMessage.Subject = message.Subject;
     List<LinkOrderCampaignProductRecord> ordersList = _orderService.GetProductsOrderedOfCampaign(message.CampaignId).ToList();
     var campaign = _campaignService.GetCampaignById(message.CampaignId);
     List<MandrillMailAddress> emails = new List<MandrillMailAddress>();
     foreach (var item in ordersList)
     {
         emails.Add(new MandrillMailAddress(item.OrderRecord.Email, "user"));
         FillMessageMergeVars(mandrillMessage, item);
     }
     mandrillMessage.To = emails;
     string text = System.IO.File.ReadAllText(pathToTemplates+"seller-template.html");
     string messageText = text.Replace("---MessageContent---", message.Text);
     messageText = messageText.Replace("---SellerEmail---", message.Sender);
     messageText = messageText.Replace("---CampaignTitle---", campaign.Title);
     string previewUrl = pathToMedia + "/Media/campaigns/" + message.CampaignId + "/" + campaign.Products[0].Id + "/normal/front.png";
     messageText = messageText.Replace("---CampaignPreviewUrl---", previewUrl);
     mandrillMessage.Html = messageText;
     var res = SendTmplMessage(api, mandrillMessage);
     _notifier.Information(T("Message has been sent!"));
     message.IsApprowed = true;
 }
示例#3
0
        public void FillMessageMergeVars(MandrillMessage message, Module.Models.LinkOrderCampaignProductRecord record)
        {
            var products = new Dictionary<string, object>
                    {
                        {"quantity", record.Count},
                        {"name",  record.CampaignProductRecord.ProductRecord.Name},
                        {"description",  record.CampaignProductRecord.ProductRecord.Details},
                        {"price",  record.CampaignProductRecord.Price},
                        {"total_price", record.OrderRecord.TotalPrice}
                    };

            message.AddRcptMergeVars(record.OrderRecord.Email, "FNAME", record.OrderRecord.FirstName);
            message.AddRcptMergeVars(record.OrderRecord.Email, "LNAME", record.OrderRecord.LastName);
            message.AddRcptMergeVars(record.OrderRecord.Email, "CITY", record.OrderRecord.City);
            message.AddRcptMergeVars(record.OrderRecord.Email, "STATE", record.OrderRecord.State);
            message.AddRcptMergeVars(record.OrderRecord.Email, "COUNTRY", record.OrderRecord.Country);
            if (record.OrderRecord.TotalPriceWithPromo > 0.0)
            {
                message.AddRcptMergeVars(record.OrderRecord.Email, "TOTALPRICE", record.OrderRecord.TotalPriceWithPromo.ToString());
            }
            else
            {
                message.AddRcptMergeVars(record.OrderRecord.Email, "TOTALPRICE", record.OrderRecord.TotalPrice.ToString());
            }
            message.AddRcptMergeVars(record.OrderRecord.Email, "PRODUCTS", products);
        }
        public Task<IList<MandrillSendMessageResponse>> SendTemplateAsync(MandrillMessage message, string templateName,
            IList<MandrillTemplateContent> templateContent = null, bool async = false,
            string ipPool = null, DateTime? sendAtUtc = null)
        {
            if (message == null) throw new ArgumentNullException(nameof(message));
            if (templateName == null) throw new ArgumentNullException(nameof(templateName));

            if (sendAtUtc != null && sendAtUtc.Value.Kind != DateTimeKind.Utc)
            {
                throw new ArgumentException("date must be in utc", nameof(sendAtUtc));
            }

            return
                MandrillApi.PostAsync<MandrillSendMessageRequest, IList<MandrillSendMessageResponse>>(
                    "messages/send-template.json",
                    new MandrillSendTemplateRequest
                    {
                        Message = message,
                        TemplateName = templateName,
                        TemplateContent = templateContent?.ToList(),
                        Async = async,
                        IpPool = ipPool,
                        SendAt = sendAtUtc?.ToString(SendAtDateFormat)
                    });
        }
        public void Can_serialize_content_as_complex_associative_array()
        {
            var message = new MandrillMessage();

            var data = new IDictionary<string, object>[]
            {
                new Dictionary<string, object>
                {
                    {"sku", "apples"},
                    {"unit_price", 0.20},
                },
                new Dictionary<string, object>
                {
                    {"sku", "oranges"},
                    {"unit_price", 0.40},
                }
            };

            message.GlobalMergeVars.Add(new MandrillMergeVar()
            {
                Name = "test",
                Content = data.ToList()
            });

            var json = JObject.FromObject(message, MandrillSerializer.Instance);

            json["global_merge_vars"].Should().NotBeEmpty();
            var result = json["global_merge_vars"].First["content"]
                .ToObject<List<Dictionary<string, object>>>(MandrillSerializer.Instance);

            result[0]["sku"].Should().Be("apples");
            result[0]["unit_price"].Should().Be(0.20);
            result[1]["sku"].Should().Be("oranges");
            result[1]["unit_price"].Should().Be(0.40);
        }
        public void Can_serialize_content_as_string()
        {
            var message = new MandrillMessage();

            message.GlobalMergeVars.Add(new MandrillMergeVar()
            {
                Name = "test",
                Content = "some content"
            });

            var json = JObject.FromObject(message, MandrillSerializer.Instance);
            json["global_merge_vars"].Should().NotBeEmpty();
            json["global_merge_vars"].First["content"].Value<string>().Should().Be("some content");
        }
 private void Send(Lead model)
 {
     var api = new MandrillApi("IRWMe1g1dCTrG6uOZEy7gQ");
     var message = new MandrillMessage();
     message.Subject = "New lead";
     message.FromEmail = "*****@*****.**";
     message.AddTo("*****@*****.**");
     message.ReplyTo = "*****@*****.**";
     //supports merge var content as string
     message.AddGlobalMergeVars("Name", model.Name);
     message.AddGlobalMergeVars("LeadStatus", model.LeadStatus.ToString());
     message.AddGlobalMergeVars("DateCreated", model.DateCreated.ToShortDateString());
     message.AddGlobalMergeVars("DateUpdated", model.DateUpdated.ToShortDateString());
     message.AddGlobalMergeVars("EMAIL", model.Email);
     message.AddGlobalMergeVars("Skype", model.Skype);
     message.AddGlobalMergeVars("Phone", model.Phone);
     message.AddGlobalMergeVars("Company", model.Company);
     message.AddGlobalMergeVars("Skype", model.Skype);
     message.AddGlobalMergeVars("ProjectDescription", model.ProjectDescription);
     message.AddGlobalMergeVars("ProjectStart", model.ProjectStart);
     message.AddGlobalMergeVars("ProjectDeadline", model.ProjectDeadline);
     //template should be created
     var result = api.Messages.SendTemplate(message, "jarboo-new-lead");
 }
示例#8
0
            public async void Can_send_template()
            {
                var message = new MandrillMessage
                {
                    FromEmail = "*****@*****.**",
                    Subject = "test",
                    Tags = new List<string>() {"test-send-template", "mandrill-net"},
                    To = new List<MandrillMailAddress>()
                    {
                        new MandrillMailAddress("*****@*****.**", "Test1 User"),
                        new MandrillMailAddress("*****@*****.**", "Test2 User")
                    },
                };

                message.AddGlobalMergeVars("ORDERDATE", DateTime.UtcNow.ToShortDateString());
                message.AddRcptMergeVars("*****@*****.**", "INVOICEDETAILS", "invoice for [email protected]");
                message.AddRcptMergeVars("*****@*****.**", "INVOICEDETAILS", "invoice for [email protected]");

                var result = await Api.Messages.SendTemplateAsync(message, TestTemplateName);

                result.Should().HaveCount(2);
                result[0].Status.Should().NotBe(MandrillSendMessageResponseStatus.Invalid);
                result[0].Status.Should().NotBe(MandrillSendMessageResponseStatus.Rejected);

                result[0].Id.Should().NotBeEmpty();
                result[1].Id.Should().NotBeEmpty();
                result[1].Status.Should().NotBe(MandrillSendMessageResponseStatus.Invalid);
                result[1].Status.Should().NotBe(MandrillSendMessageResponseStatus.Rejected);
            }
示例#9
0
            public async void Can_send_scheduled()
            {
                var message = new MandrillMessage
                {
                    FromEmail = "*****@*****.**",
                    Subject = "test",
                    Tags = new List<string>() {"test-send", "mandrill-net"},
                    To = new List<MandrillMailAddress>()
                    {
                        new MandrillMailAddress("*****@*****.**")
                    },
                    Text = "This is a test",
                };

                var sendAtUtc = DateTime.UtcNow.AddHours(1);
                var result = await Api.Messages.SendAsync(message, sendAtUtc: sendAtUtc);

                result.Should().HaveCount(1);
                result[0].Email.Should().Be("*****@*****.**");
                result[0].Status.Should().Be(MandrillSendMessageResponseStatus.Scheduled);
            }
示例#10
0
            public void Throws_if_scheduled_is_not_utc()
            {
                var message = new MandrillMessage();

                var sendAtLocal = DateTime.SpecifyKind(DateTime.Now.AddHours(1), DateTimeKind.Local);
                var result = Assert.Throws<ArgumentException>(async () => await Api.Messages.SendAsync(message, sendAtUtc: sendAtLocal));

                result.ParamName.Should().Be("sendAtUtc");
            }
示例#11
0
        public void SendChangedCampaignStatusMessage(int campaignId, string campaignStatus)
        {
            string pathToMedia = AppDomain.CurrentDomain.BaseDirectory;
            string pathToTemplates = Path.Combine(pathToMedia, "Modules/Teeyoot.Module/Content/message-templates/");
            var campaign = _campaignRepository.Get(campaignId);
            var record = _settingsService.GetSettingByCulture(campaign.CampaignCulture).List().First();
            var api = new MandrillApi(record.ApiKey);
            var mandrillMessage = new MandrillMessage() { };
            mandrillMessage.MergeLanguage = MandrillMessageMergeLanguage.Handlebars;
            mandrillMessage.FromEmail = ADMIN_EMAIL;
            mandrillMessage.FromName = "Teeyoot";
            var seller = _contentManager.Query<UserPart, UserPartRecord>().List().FirstOrDefault(user => user.Id == campaign.TeeyootUserId);
            mandrillMessage.To = new List<MandrillMailAddress>(){
                new MandrillMailAddress(seller.Email, "Seller")
            };
            FillCampaignMergeVars(mandrillMessage, campaignId, seller.Email, pathToMedia, pathToTemplates);
            switch (campaignStatus)
            {
                case "Unpaid":
                {
                    mandrillMessage.Subject = _mailSubjectService
                        .GetMailSubject("unpaid-campaign-template", CultureUsed);
                        //mandrillMessage.Subject = "We haven't paid you yet!";
                        mandrillMessage.Html = System.IO.File.ReadAllText(pathToTemplates + "unpaid-campaign-template-" + campaign.CampaignCulture + ".html");
                        break;
                    };
                case "Paid":
                {
                    mandrillMessage.Subject = _mailSubjectService
                        .GetMailSubject("paid-campaign-template", CultureUsed);
                        //mandrillMessage.Subject = "We have paid you!";
                        mandrillMessage.Html = System.IO.File.ReadAllText(pathToTemplates + "paid-campaign-template-" + campaign.CampaignCulture + ".html");
                        break;
                    };
                //case "PartiallyPaid":
                //    {
                //        mandrillMessage.Subject = "We have partially paid you!";
                //        mandrillMessage.Html = System.IO.File.ReadAllText(pathToTemplates + "partially-paid-campaign-template.html");
                //        break;
                //    };
            }
            SendTmplMessage(api, mandrillMessage);

        }
示例#12
0
            public void Can_send_sync()
            {
                var message = new MandrillMessage
                {
                    FromEmail = "*****@*****.**",
                    Subject = "test",
                    Tags = new List<string> { "test-send", "mandrill-net" },
                    To = new List<MandrillMailAddress>()
                    {
                        new MandrillMailAddress("*****@*****.**")
                    },
                    Text = "This is a test",
                };
                var result = Api.Messages.Send(message, true);

                result.Should().HaveCount(1);
                result[0].Email.Should().Be("*****@*****.**");
                result[0].Status.Should().NotBe(MandrillSendMessageResponseStatus.Rejected);
                result[0].Status.Should().NotBe(MandrillSendMessageResponseStatus.Invalid);
            }
示例#13
0
 public void SendWelcomeMessage(string userEmail, string pathToTemplates)
 {
     var record = _settingsService.GetAllSettings().List().FirstOrDefault();
     var api = new MandrillApi(record.ApiKey);
     var mandrillMessage = new MandrillMessage() { };
     mandrillMessage.MergeLanguage = MandrillMessageMergeLanguage.Handlebars;
     mandrillMessage.FromEmail = "*****@*****.**";
     mandrillMessage.Subject = "Welcome to teeyoot!";
     List<MandrillMailAddress> emails = new List<MandrillMailAddress>();
     emails.Add(new MandrillMailAddress(userEmail, "user"));
     mandrillMessage.To = emails;
     string text = System.IO.File.ReadAllText(pathToTemplates + "welcome-template.html");
     mandrillMessage.Html = text;
     var res = SendTmplMessage(api, mandrillMessage);
     var result = res;
 }
示例#14
0
        public void SendCampaignFinished1DayMessageToSeller()
        {
            string pathToMedia = AppDomain.CurrentDomain.BaseDirectory;
            string pathToTemplates = Path.Combine(pathToMedia, "Modules/Teeyoot.Module/Content/message-templates/");
            var campaigns = _campaignRepository.Table.Where(camp => camp.EndDate < DateTime.UtcNow.AddDays(-1) && camp.EndDate > DateTime.UtcNow.AddDays(-3) && camp.IsApproved);
            MailChimpSettingsPart record = null;
            if (campaigns != null || campaigns.Count() != 0)
            {
                record = _settingsService.GetSettingByCulture(campaigns.First().CampaignCulture).List().First();
            }
            else
            {
                record = _settingsService.GetAllSettings().List().FirstOrDefault();
            }
            var api = new MandrillApi(record.ApiKey);
            foreach (var campaign in campaigns)
            {
                var mandrillMessage = new MandrillMessage() { };
                mandrillMessage.MergeLanguage = MandrillMessageMergeLanguage.Handlebars;
                mandrillMessage.FromEmail = ADMIN_EMAIL;
                mandrillMessage.FromName = "Teeyoot";
                mandrillMessage.Subject = _mailSubjectService
                    .GetMailSubject("campaign-is-finished-template", CultureUsed);
                //mandrillMessage.Subject = "Campaing is finished!";
                var seller = _contentManager.Query<UserPart, UserPartRecord>().List().FirstOrDefault(user => user.Id == campaign.TeeyootUserId);
                mandrillMessage.To = new List<MandrillMailAddress>(){
                new MandrillMailAddress(seller.Email, "Seller")};
                FillCampaignMergeVars(mandrillMessage, campaign.Id, seller.Email, pathToMedia, pathToTemplates);
                mandrillMessage.Html = System.IO.File.ReadAllText(pathToTemplates + "campaign-is-finished-template-" + campaign.CampaignCulture + ".html");
                SendTmplMessage(api, mandrillMessage);
            }

        }
示例#15
0
        public void SendNewCampaignAdminMessage(string pathToTemplates, string pathToMedia, int campaignId)
        {
            var campaign = _campaignRepository.Get(campaignId);
            var record = _settingsService.GetSettingByCulture(campaign.CampaignCulture).List().First();
            var api = new MandrillApi(record.ApiKey);
            var mandrillMessage = new MandrillMessage() { };
            mandrillMessage.MergeLanguage = MandrillMessageMergeLanguage.Handlebars;
            mandrillMessage.FromEmail = ADMIN_EMAIL;
            mandrillMessage.FromName = "Teeyoot";
            mandrillMessage.Subject = _mailSubjectService
                .GetMailSubject("new-campaign-admin-template", CultureUsed);
            //mandrillMessage.Subject = "Yay! new campaign";
            var userIds = _userRolesPartRepository.Table.Where(x => x.Role.Name == "Administrator").Select(x => x.UserId);
            var users = _contentManager.GetMany<IUser>(userIds, VersionOptions.Published, QueryHints.Empty);
            List<MandrillMailAddress> emails = new List<MandrillMailAddress>();
            foreach (var user in users)
            {
                emails.Add(new MandrillMailAddress(user.Email, "Admin"));
                FillCampaignMergeVars(mandrillMessage, campaignId, user.Email, pathToMedia, pathToTemplates);
            }
            mandrillMessage.To = emails;
            mandrillMessage.Html = System.IO.File.ReadAllText(pathToTemplates + "new-campaign-admin-template-" + campaign.CampaignCulture + ".html");
            SendTmplMessage(api, mandrillMessage);

        }
示例#16
0
 public void SendRejectedCampaignMessage(string pathToTemplates, string pathToMedia, int campaignId)
 {
     var campaign = _campaignRepository.Get(campaignId);
     var record = _settingsService.GetSettingByCulture(campaign.CampaignCulture).List().First();
     var api = new MandrillApi(record.ApiKey);
     var mandrillMessage = new MandrillMessage() { };
     mandrillMessage.MergeLanguage = MandrillMessageMergeLanguage.Handlebars;
     mandrillMessage.FromEmail = ADMIN_EMAIL;
     mandrillMessage.FromName = "Teeyoot";
     mandrillMessage.Subject = _mailSubjectService
         .GetMailSubject("reject-template", CultureUsed);
     //mandrillMessage.Subject = "Sorry, we couldn't approve your campaign";
     var seller = _contentManager.Query<UserPart, UserPartRecord>().List().FirstOrDefault(user => user.Id == campaign.TeeyootUserId);
     mandrillMessage.To = new List<MandrillMailAddress>(){
         new MandrillMailAddress(seller.Email, "Seller")
     };
     FillCampaignMergeVars(mandrillMessage, campaignId, seller.Email, pathToMedia, pathToTemplates);
     mandrillMessage.Html = System.IO.File.ReadAllText(pathToTemplates + "reject-template-" + campaign.CampaignCulture + ".html");
     SendTmplMessage(api, mandrillMessage);
 }
示例#17
0
        public void SendEditedCampaignMessageToSeller(int campaignId, string pathToMedia, string pathToTemplates)
        {
            var campaign = _campaignRepository.Get(campaignId);
            var record = _settingsService.GetSettingByCulture(campaign.CampaignCulture).List().First();
            var api = new MandrillApi(record.ApiKey);
            var mandrillMessage = new MandrillMessage() { };
            mandrillMessage.MergeLanguage = MandrillMessageMergeLanguage.Handlebars;
            mandrillMessage.FromEmail = "*****@*****.**";
            mandrillMessage.FromName = "Teeyoot";
            mandrillMessage.Subject = _mailSubjectService
                .GetMailSubject("edited-campaign-template", CultureUsed);
            //mandrillMessage.Subject = "We edited your campaign";
            List<MandrillMailAddress> emails = new List<MandrillMailAddress>();
            var seller = _contentManager.Query<UserPart, UserPartRecord>().List().FirstOrDefault(user => user.Id == campaign.TeeyootUserId);
            emails.Add(new MandrillMailAddress(seller.Email, "Seller"));
            List<CampaignProductRecord> orderedProducts = _campaignProductRepository.Table.Where(prod => prod.CampaignRecord_Id == campaign.Id && prod.WhenDeleted == null).ToList();
            FillCampaignProductsMergeVars(mandrillMessage, orderedProducts, pathToMedia, seller.Email);
            FillCampaignMergeVars(mandrillMessage, campaign.Id, seller.Email, pathToMedia, pathToTemplates);
            FillAdditionalCampaignMergeVars(mandrillMessage, campaign.Id, seller.Email, pathToMedia, pathToTemplates);
            mandrillMessage.To = emails;
            mandrillMessage.Html = System.IO.File.ReadAllText(pathToTemplates + "edited-campaign-template-" + campaign.CampaignCulture + ".html");
            SendTmplMessage(api, mandrillMessage);

        }
示例#18
0
        public void SendCheckoutRequestEmails(IEnumerable<CheckoutCampaignRequest> checkoutCampaignRequests)
        {
            var culture = _wca.GetContext().CurrentCulture.Trim();
            string cultureUsed = culture == "en-SG" ? "en-SG" : (culture == "id-ID" ? "id-ID" : "en-MY");

            var pathToTemplates = HttpContext.Current.Server.MapPath(MessageTemplatesPath);
            var record = _settingsService.GetSettingByCulture(cultureUsed).List().First();
            var api = new MandrillApi(record.ApiKey);
            List<MandrillMailAddress> emails = new List<MandrillMailAddress>();
            var mandrillMessage = new MandrillMessage
            {
                MergeLanguage = MandrillMessageMergeLanguage.Handlebars,
                FromEmail = "*****@*****.**",
                FromName = "Teeyoot",
                Subject = "Join us now"
            };

            List<string> checkoutEmails = checkoutCampaignRequests.Select(r =>r.Email).ToList();
            List<string> resultEmails = new List<string>();
            var noDupes = new HashSet<string>(checkoutEmails);
            resultEmails.Clear();
            resultEmails.AddRange(noDupes);
            foreach (var item in resultEmails)
            {
                emails.Add(new MandrillMailAddress(item, "Seller"));
            }

            mandrillMessage.To = emails;
            var text = File.ReadAllText(pathToTemplates + "make_the_campaign_seller-" + cultureUsed + ".html");
            mandrillMessage.Html = text;
            var res = SendTmplMessage(api, mandrillMessage);
        }
示例#19
0
        public void SendNewOrderMessageToBuyer(int orderId, string pathToMedia, string pathToTemplates)
        {
            var order = _orderRepository.Get(orderId);
            var record = _settingsService.GetSettingByCulture(order.CurrencyRecord.CurrencyCulture).List().First();
            var api = new MandrillApi(record.ApiKey);
            var mandrillMessage = new MandrillMessage() { };
            mandrillMessage.MergeLanguage = MandrillMessageMergeLanguage.Handlebars;
            mandrillMessage.FromEmail = "*****@*****.**";
            mandrillMessage.FromName = "Teeyoot";
            mandrillMessage.Subject = _mailSubjectService
                .GetMailSubject("new-order-buyer-template", CultureUsed);
            //mandrillMessage.Subject = "Thanks for your purchase!";
            List<MandrillMailAddress> emails = new List<MandrillMailAddress>();
                emails.Add(new MandrillMailAddress(order.Email, "Buyer"));
                FillUserMergeVars(mandrillMessage, order, order.Email);
                FillProductsMergeVars(mandrillMessage, order.Products, pathToMedia, order.Email, order.OrderPublicId);
                FillCampaignMergeVars(mandrillMessage, order.Products[0].CampaignProductRecord.CampaignRecord_Id, order.Email, pathToMedia, pathToTemplates);
            mandrillMessage.To = emails;
            mandrillMessage.Html = System.IO.File.ReadAllText(pathToTemplates + "new-order-buyer-template-" + order.CurrencyRecord.CurrencyCulture + ".html");
            SendTmplMessage(api, mandrillMessage);

        }
示例#20
0
        public void SendNewOrderMessageToAdmin(int orderId, string pathToMedia, string pathToTemplates)
        {
            var order = _orderRepository.Get(orderId);
            //string pathToMedia = AppDomain.CurrentDomain.BaseDirectory;
            //string pathToTemplates = Path.Combine(pathToMedia, "Modules/Teeyoot.Module/Content/message-templates/");
            var record = _settingsService.GetSettingByCulture(order.CurrencyRecord.CurrencyCulture).List().First();
            var api = new MandrillApi(record.ApiKey);
            var mandrillMessage = new MandrillMessage() { };
            mandrillMessage.MergeLanguage = MandrillMessageMergeLanguage.Handlebars;
            mandrillMessage.FromEmail = "*****@*****.**";
            mandrillMessage.Subject = _mailSubjectService
                .GetMailSubject("new-order-template", CultureUsed);
            mandrillMessage.FromName = "Teeyoot";
            var userIds = _userRolesPartRepository.Table.Where(x => x.Role.Name == "Administrator").Select(x => x.UserId);
            var users = _contentManager.GetMany<IUser>(userIds, VersionOptions.Published, QueryHints.Empty);
            List<MandrillMailAddress> emails = new List<MandrillMailAddress>();
            foreach (var user in users)
            {
                emails.Add(new MandrillMailAddress(user.Email, "Admin"));
                FillUserMergeVars(mandrillMessage, order, user.Email);
                FillProductsMergeVars(mandrillMessage, order.Products, pathToMedia, user.Email, order.OrderPublicId);
                FillCampaignMergeVars(mandrillMessage, order.Products[0].CampaignProductRecord.CampaignRecord_Id, user.Email, pathToMedia, pathToTemplates);
            }
            mandrillMessage.To = emails;
            mandrillMessage.Html = System.IO.File.ReadAllText(pathToTemplates + "new-order-template-" + order.CurrencyRecord.CurrencyCulture + ".html");
            SendTmplMessage(api, mandrillMessage);

        }
示例#21
0
 public void SendSellerMessage(int messageId, string pathToMedia, string pathToTemplates)
 {
     var message = _messageService.GetMessage(messageId);
     List<LinkOrderCampaignProductRecord> ordersList = _ocpRepository.Table.Where(p => p.CampaignProductRecord.CampaignRecord_Id == message.CampaignId && p.OrderRecord.IsActive).ToList();
     var culture = ordersList.First().CampaignProductRecord.CurrencyRecord.CurrencyCulture;
     var record = _settingsService.GetSettingByCulture(culture).List().First();
     var api = new MandrillApi(record.ApiKey);
     var mandrillMessage = new MandrillMessage() { };
     mandrillMessage.MergeLanguage = MandrillMessageMergeLanguage.Handlebars;
     mandrillMessage.FromEmail = message.Sender;
     mandrillMessage.Subject = message.Subject;
     mandrillMessage.FromName = "Teeyoot";
     List<MandrillMailAddress> emails = new List<MandrillMailAddress>();
     List<string> emailsList = new List<string>();
     foreach (var item in ordersList)
     {
         if (item.OrderRecord.Email != null)
         {
             emailsList.Add(item.OrderRecord.Email);
             FillUserMergeVars(mandrillMessage, item.OrderRecord);
             FillSellerToBuyersProductsMergeVars(mandrillMessage, item.OrderRecord.Products, pathToMedia, item.OrderRecord.Email, item.OrderRecord.OrderPublicId);
             FillCampaignMergeVars(mandrillMessage, message.CampaignId, item.OrderRecord.Email, pathToMedia, pathToTemplates);
         }
     }
     List<string> resultEmails = new List<string>();
     var noDupes = new HashSet<string>(emailsList);
     resultEmails.Clear();
     resultEmails.AddRange(noDupes);
     foreach (var item in resultEmails)
     {
         emails.Add(new MandrillMailAddress(item, "Buyer"));
     }
     mandrillMessage.To = emails;
     string text = System.IO.File.ReadAllText(pathToTemplates + "seller-template-" + ordersList.First().OrderRecord.CurrencyRecord.CurrencyCulture + ".html").Replace("{{Text}}", message.Text);
     mandrillMessage.Html = text;
     message.IsApprowed = true;
     var res = SendTmplMessage(api, mandrillMessage);
 }
示例#22
0
            public async void Can_send_template_object_list()
            {
                var message = new MandrillMessage
                {
                    FromEmail = "*****@*****.**",
                    Subject = "test",
                    Tags = new List<string>() { "test-send-template", "mandrill-net", "handlebars" },
                    MergeLanguage = MandrillMessageMergeLanguage.Handlebars,
                    To = new List<MandrillMailAddress>()
                    {
                        new MandrillMailAddress("*****@*****.**", "Test1 User"),
                        new MandrillMailAddress("*****@*****.**", "Test2 User")
                    },
                };


                var data1 = new[]
                {
                    new Dictionary<string, object>
                    {
                        {"sku", "APL43"},
                        {"name", "apples"},
                        {"description", "Granny Smith Apples"},
                        {"price", 0.20},
                        {"qty", 8},
                        {"ordPrice", 1.60},

                    },
                    new Dictionary<string, object>
                    {
                        {"sku", "ORA44"},
                        {"name", "Oranges"},
                        {"description", "Blood Oranges"},
                        {"price", 0.30},
                        {"qty", 3},
                        {"ordPrice", 0.93},

                    }
                };

                var data2 = new[]
                {
                    new Dictionary<string, object>
                    {
                        {"sku", "APL54"},
                        {"name", "apples"},
                        {"description", "Red Delicious Apples"},
                        {"price", 0.22},
                        {"qty", 9},
                        {"ordPrice", 1.98},

                    },
                    new Dictionary<string, object>
                    {
                        {"sku", "ORA53"},
                        {"name", "Oranges"},
                        {"description", "Sunkist Oranges"},
                        {"price", 0.20},
                        {"qty", 1},
                        {"ordPrice", 0.20},

                    }
                };

                message.AddGlobalMergeVars("ORDERDATE", DateTime.UtcNow.ToShortDateString());
                message.AddRcptMergeVars("*****@*****.**", "PRODUCTS", data1);
                message.AddRcptMergeVars("*****@*****.**", "PRODUCTS",  data2);

                var result = await Api.Messages.SendTemplateAsync(message, TestTemplateName);

                result.Should().HaveCount(2);
                result[0].Status.Should().Be(MandrillSendMessageResponseStatus.Sent);
                result[0].Id.Should().NotBeEmpty();
                result[1].Id.Should().NotBeEmpty();
                result[1].Status.Should().Be(MandrillSendMessageResponseStatus.Sent);
            }
示例#23
0
        public void SendOrderStatusMessage(string pathToTemplates, string pathToMedia, int orderId, string orderStatus)
        {
            var order = _orderRepository.Get(orderId);
            var record = _settingsService.GetSettingByCulture(order.CurrencyRecord.CurrencyCulture).List().First();
            var api = new MandrillApi(record.ApiKey);
            var mandrillMessage = new MandrillMessage() { };
            mandrillMessage.MergeLanguage = MandrillMessageMergeLanguage.Handlebars;
            mandrillMessage.FromEmail = ADMIN_EMAIL;
            mandrillMessage.FromName = "Teeyoot";
            switch (orderStatus)
            {
                case "Approved":
                {
                    mandrillMessage.Subject = _mailSubjectService
                        .GetMailSubject("place-order-template", CultureUsed);
                        //mandrillMessage.Subject = "Thanks for your purchase!";
                        mandrillMessage.Html = System.IO.File.ReadAllText(pathToTemplates + "place-order-template-" + order.CurrencyRecord.CurrencyCulture + ".html");
                        FillUserMergeVars(mandrillMessage, order);
                        FillCampaignMergeVars(mandrillMessage, order.Products[0].CampaignProductRecord.CampaignRecord_Id, order.Email, pathToMedia, pathToTemplates);
                        FillProductsMergeVars(mandrillMessage, order.Products, pathToMedia, order.Email, order.OrderPublicId);
                        mandrillMessage.To = new List<MandrillMailAddress>(){
                         new MandrillMailAddress(order.Email, "Buyer")
                                                         };
                        SendTmplMessage(api, mandrillMessage);
                        break;
                    };
                case "Printing":
                {
                    mandrillMessage.Subject = _mailSubjectService
                        .GetMailSubject("order-is-printing-buyer-template", CultureUsed);
                        //mandrillMessage.Subject = "Yay! we are printing them";
                        mandrillMessage.Html = System.IO.File.ReadAllText(pathToTemplates + "order-is-printing-buyer-template-" + order.CurrencyRecord.CurrencyCulture + ".html");
                        FillUserMergeVars(mandrillMessage, order);
                        FillCampaignMergeVars(mandrillMessage, order.Products[0].CampaignProductRecord.CampaignRecord_Id, order.Email, pathToMedia, pathToTemplates);
                        FillProductsMergeVars(mandrillMessage, order.Products, pathToMedia, order.Email, order.OrderPublicId);
                        mandrillMessage.To = new List<MandrillMailAddress>(){
                                             new MandrillMailAddress(order.Email, "Buyer")
                                                            };
                        SendTmplMessage(api, mandrillMessage);
                        break;
                    };
                case "Shipped":
                {
                    mandrillMessage.Subject = _mailSubjectService
                        .GetMailSubject("shipped-order-template", CultureUsed);
                        //mandrillMessage.Subject = "Your order is on its way!";
                        mandrillMessage.Html = System.IO.File.ReadAllText(pathToTemplates + "shipped-order-template-" + order.CurrencyRecord.CurrencyCulture + ".html");
                        FillUserMergeVars(mandrillMessage, order);
                        FillCampaignMergeVars(mandrillMessage, order.Products[0].CampaignProductRecord.CampaignRecord_Id, order.Email, pathToMedia, pathToTemplates);
                        FillProductsMergeVars(mandrillMessage, order.Products, pathToMedia, order.Email, order.OrderPublicId);
                        mandrillMessage.To = new List<MandrillMailAddress>(){
                                                                 new MandrillMailAddress(order.Email, "Buyer")
                                                                 };
                        SendTmplMessage(api, mandrillMessage);
                        break;
                    };
                case "Delivered":
                {
                    mandrillMessage.Subject = _mailSubjectService
                        .GetMailSubject("delivered-order-template", CultureUsed);
                        //mandrillMessage.Subject = "We have delivered your order!";
                        mandrillMessage.Html = System.IO.File.ReadAllText(pathToTemplates + "delivered-order-template-" + order.CurrencyRecord.CurrencyCulture + ".html");
                        FillUserMergeVars(mandrillMessage, order);
                        FillCampaignMergeVars(mandrillMessage, order.Products[0].CampaignProductRecord.CampaignRecord_Id, order.Email, pathToMedia, pathToTemplates);
                        FillProductsMergeVars(mandrillMessage, order.Products, pathToMedia, order.Email, order.OrderPublicId);
                        mandrillMessage.To = new List<MandrillMailAddress>(){
                                                         new MandrillMailAddress(order.Email, "Buyer")
                                                     };
                        SendTmplMessage(api, mandrillMessage);
                        break;
                    };
                case "Cancelled":
                {
                    mandrillMessage.Subject = _mailSubjectService
                        .GetMailSubject("cancelled-order-template", CultureUsed);
                        //mandrillMessage.Subject = "Order was cancelled";
                        mandrillMessage.Html = System.IO.File.ReadAllText(pathToTemplates + "cancelled-order-template-" + order.CurrencyRecord.CurrencyCulture + ".html");
                        FillUserMergeVars(mandrillMessage, order);
                        FillCampaignMergeVars(mandrillMessage, order.Products[0].CampaignProductRecord.CampaignRecord_Id, order.Email, pathToMedia, pathToTemplates);
                        FillProductsMergeVars(mandrillMessage, order.Products, pathToMedia, order.Email, order.OrderPublicId);
                        mandrillMessage.To = new List<MandrillMailAddress>(){
                                                     new MandrillMailAddress(order.Email, "Buyer")
                                            };
                        SendTmplMessage(api, mandrillMessage);
                        break;
                    };

            }

        }
示例#24
0
            public async void Can_send_template_dynamic()
            {
                var message = new MandrillMessage
                {
                    FromEmail = "*****@*****.**",
                    Subject = "test",
                    Tags = new List<string>() { "test-send-template", "mandrill-net", "handlebars" },
                    MergeLanguage = MandrillMessageMergeLanguage.Handlebars,
                    To = new List<MandrillMailAddress>()
                    {
                        new MandrillMailAddress("*****@*****.**", "Test1 User"),
                        new MandrillMailAddress("*****@*****.**", "Test2 User")
                    },
                };

                dynamic item1 = new ExpandoObject();
                item1.sku = "APL54";
                item1.name = "apples";
                item1.description = "Red Dynamic Apples";
                item1.price = 0.22;
                item1.qty = 9;
                item1.ordPrice = 1.98;
                item1.tags = new {id = "tag1", enabled = true};


                dynamic item2 = new ExpandoObject();
                item2.sku = "ORA54";
                item2.name = "oranges";
                item2.description = "Dynamic Oranges";
                item2.price = 0.33;
                item2.qty = 8;
                item2.ordPrice = 2.00;
                item2.tags = new { id = "tag2", enabled = false };


                message.AddGlobalMergeVars("ORDERDATE", DateTime.UtcNow.ToShortDateString());
                message.AddGlobalMergeVars("PRODUCTS", item1, item2);

                var result = await Api.Messages.SendTemplateAsync(message, TestTemplateName);

                result.Should().HaveCount(2);
                result[0].Status.Should().Be(MandrillSendMessageResponseStatus.Sent);
                result[0].Id.Should().NotBeEmpty();
                result[1].Id.Should().NotBeEmpty();
                result[1].Status.Should().Be(MandrillSendMessageResponseStatus.Sent);
            }
示例#25
0
            public async void Can_send_message()
            {
                var message = new MandrillMessage
                {
                    FromEmail = "*****@*****.**",
                    Subject = "test",
                    Tags = new List<string>() {"test-send", "mandrill-net"},
                    To = new List<MandrillMailAddress>()
                    {
                        new MandrillMailAddress("*****@*****.**"),
                        new MandrillMailAddress("*****@*****.**", "A test")
                    },
                    Text = "This is a test",
                    Html = @"<html>
<head>
	<title>a test</title>
</head>
<body>
<p>this is a test</p>
</body>
</html>"
                };
                var result = await Api.Messages.SendAsync(message);

                result.Should().HaveCount(2);
                result[0].Status.Should().Be(MandrillSendMessageResponseStatus.Sent);
                result[0].Id.Should().NotBeEmpty();
                result[1].Id.Should().NotBeEmpty();
                result[1].Status.Should().Be(MandrillSendMessageResponseStatus.Sent);
            }
示例#26
0
        public void SendOrderShipped3DaysToBuyer()
        {
            string pathToMedia = AppDomain.CurrentDomain.BaseDirectory;
            string pathToTemplates = Path.Combine(pathToMedia, "Modules/Teeyoot.Module/Content/message-templates/");
           
            var orders = _orderRepository.Table.Where(order => order.WhenSentOut < DateTime.UtcNow.AddDays(-1) && order.WhenSentOut > DateTime.UtcNow.AddDays(-3));
            MailChimpSettingsPart record = null;
            if (orders != null || orders.Count() != 0)
            {
                record = _settingsService.GetSettingByCulture(orders.First().CurrencyRecord.CurrencyCulture).List().First();
            }
            else
            {
                record = _settingsService.GetAllSettings().List().FirstOrDefault();
            }
            var api = new MandrillApi(record.ApiKey);
            foreach (var order in orders)
            {
                var mandrillMessage = new MandrillMessage() { };
                mandrillMessage.MergeLanguage = MandrillMessageMergeLanguage.Handlebars;
                mandrillMessage.FromEmail = ADMIN_EMAIL;
                mandrillMessage.FromName = "Teeyoot";
                mandrillMessage.Subject = _mailSubjectService
                    .GetMailSubject("shipped-order-3day-after-template", CultureUsed);
                //mandrillMessage.Subject = "Your order should be around the corner";
                List<MandrillMailAddress> emails = new List<MandrillMailAddress>();
                emails.Add(new MandrillMailAddress(order.Email, "Buyer"));
                mandrillMessage.To = emails;
                FillUserMergeVars(mandrillMessage, order, order.Email);
                FillProductsMergeVars(mandrillMessage, order.Products, pathToMedia, order.Email, order.OrderPublicId);
                FillCampaignMergeVars(mandrillMessage, order.Products[0].CampaignProductRecord.CampaignRecord_Id, order.Email, pathToMedia, pathToTemplates);
                mandrillMessage.Html = System.IO.File.ReadAllText(pathToTemplates + "shipped-order-3day-after-template-" + order.CurrencyRecord.CurrencyCulture + ".html");
                SendTmplMessage(api, mandrillMessage);
            }

        }
示例#27
0
            public void Can_throw_errors_when_error_response()
            {
                var invalidSubaccount = Guid.NewGuid().ToString("N");
                var message = new MandrillMessage
                {
                    FromEmail = "*****@*****.**",
                    Subject = "test",
                    Tags = new List<string>() {"test-send-invalid"},
                    To = new List<MandrillMailAddress>()
                    {
                        new MandrillMailAddress("*****@*****.**")
                    },
                    Text = "This is a test",
                    Subaccount = invalidSubaccount
                };

                var result = Assert.Throws<MandrillException>(async () => await Api.Messages.SendAsync(message));
                result.Should().NotBeNull();
                result.Name.Should().Be("Unknown_Subaccount");
                result.Message.Should().Contain(invalidSubaccount);
            }
示例#28
0
        public void SendPayoutRequestMessageToAdmin(int userId, string accountNumber, string bankName, string accHoldName, string contNum, string messAdmin)
        {
            var culture = _wca.GetContext().CurrentCulture.Trim();
            string cultureUsed = culture == "en-SG" ? "en-SG" : (culture == "id-ID" ? "id-ID" : "en-MY");

            string pathToMedia = AppDomain.CurrentDomain.BaseDirectory;
            string pathToTemplates = Path.Combine(pathToMedia, "Modules/Teeyoot.Module/Content/message-templates/");
            
            var userIds = _userRolesPartRepository.Table.Where(x => x.Role.Name == "Administrator").Select(x => x.UserId);
            var users = _contentManager.GetMany<IUser>(userIds, VersionOptions.Published, QueryHints.Empty);
            var teeUser = _contentManager.Get<TeeyootUserPart>(userIds.First(), VersionOptions.Latest);
            var record = _settingsService.GetSettingByCulture(cultureUsed).List().First();
            if (teeUser !=null)
            {
                record = _settingsService.GetSettingByCulture(teeUser.TeeyootUserCulture).List().First();
                cultureUsed = teeUser.TeeyootUserCulture;
            }         
            var api = new MandrillApi(record.ApiKey);
            var mandrillMessage = new MandrillMessage() { };
            mandrillMessage.MergeLanguage = MandrillMessageMergeLanguage.Handlebars;
            mandrillMessage.FromEmail = "*****@*****.**";
            mandrillMessage.FromName = "Teeyoot";
            mandrillMessage.Subject = _mailSubjectService
                .GetMailSubject("withdraw-template", CultureUsed);
            //mandrillMessage.Subject = "Someone wants to withdraw";
            List<MandrillMailAddress> emails = new List<MandrillMailAddress>();
            foreach (var user in users)
            {
                emails.Add(new MandrillMailAddress(user.Email, "Admin"));
                FillPayoutRequestMergeVars(mandrillMessage, user.Email, userId, accountNumber, bankName, accHoldName, contNum, messAdmin, 0.00, "");
            }
            mandrillMessage.To = emails;
            mandrillMessage.Html = System.IO.File.ReadAllText(pathToTemplates + "withdraw-template-" + cultureUsed + ".html");
            SendTmplMessage(api, mandrillMessage);

        }
示例#29
0
        public void SendCompletedPayoutMessage(string pathToTemplates, string pathToMedia, PayoutRecord payout)
        {
            var seller = _contentManager.Query<UserPart, UserPartRecord>().List().FirstOrDefault(user => user.Id == payout.UserId);
            var payoutInf = _payoutInformRepository.Table.Where(inf => inf.TranzactionId == payout.Id).FirstOrDefault();
            var currency = _currencyRepository.Get(payout.Currency_Id).Code;
            var culture = _currencyRepository.Get(payout.Currency_Id).CurrencyCulture;
            var record = _settingsService.GetSettingByCulture(culture).List().First();
            var api = new MandrillApi(record.ApiKey);
            var mandrillMessage = new MandrillMessage() { };
            mandrillMessage.MergeLanguage = MandrillMessageMergeLanguage.Handlebars;
            mandrillMessage.FromEmail = "*****@*****.**";
            mandrillMessage.FromName = "Teeyoot";
            mandrillMessage.Subject = _mailSubjectService
                .GetMailSubject("withdraw-completed-template", CultureUsed);
            //mandrillMessage.Subject = "We have paid you. Definitely!";
            List<MandrillMailAddress> emails = new List<MandrillMailAddress>();
            emails.Add(new MandrillMailAddress(seller.Email, "Seller"));
            FillPayoutRequestMergeVars(mandrillMessage, seller.Email, seller.Id, payoutInf.AccountNumber.ToString(), payoutInf.BankName.ToString(), payoutInf.AccountHolderName.ToString(), payoutInf.ContactNumber.ToString(), "", payout.Amount, currency);
            mandrillMessage.To = emails;
            mandrillMessage.Html = System.IO.File.ReadAllText(pathToTemplates + "withdraw-completed-template-" + _currencyRepository.Get(payout.Currency_Id).CurrencyCulture + ".html");
            SendTmplMessage(api, mandrillMessage);

        }
示例#30
0
        public string SendTmplMessage(MandrillApi mAPI, Mandrill.Model.MandrillMessage message)
        {
            var result = mAPI.Messages.Send(message);

            return(result.ToString());
        }
示例#31
0
        public void SendPayoutRequestMessageToSeller(int userId, string accountNumber, string bankName, string accHoldName, string contNum)
        {
            var culture = _wca.GetContext().CurrentCulture.Trim();
            string cultureUsed = culture == "en-SG" ? "en-SG" : (culture == "id-ID" ? "id-ID" : "en-MY");

            string pathToMedia = AppDomain.CurrentDomain.BaseDirectory;
            string pathToTemplates = Path.Combine(pathToMedia, "Modules/Teeyoot.Module/Content/message-templates/");
            var use = _contentManager.Get<TeeyootUserPart>(userId, VersionOptions.Latest);
            if (use != null)
            {
                cultureUsed = use.TeeyootUserCulture;
            }
            var record = _settingsService.GetSettingByCulture(cultureUsed).List().First();
            var api = new MandrillApi(record.ApiKey);
            var mandrillMessage = new MandrillMessage() { };
            mandrillMessage.MergeLanguage = MandrillMessageMergeLanguage.Handlebars;
            mandrillMessage.FromEmail = "*****@*****.**";
            mandrillMessage.FromName = "Teeyoot";
            mandrillMessage.Subject = _mailSubjectService
                .GetMailSubject("withdraw-seller-template", CultureUsed);
            //mandrillMessage.Subject = "We have received your payout request";
            var user = _contentManager.Get<UserPart>(userId, VersionOptions.Latest);
            List<MandrillMailAddress> emails = new List<MandrillMailAddress>();
            emails.Add(new MandrillMailAddress(user.Email, "Seller"));
            FillPayoutRequestMergeVars(mandrillMessage, user.Email, userId, accountNumber, bankName, accHoldName, contNum, "", 0.00, "");
            mandrillMessage.To = emails;
            mandrillMessage.Html = System.IO.File.ReadAllText(pathToTemplates + "withdraw-seller-template-" + cultureUsed + ".html");
            SendTmplMessage(api, mandrillMessage);

        }