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; }
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; }
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"); }
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); }
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); }
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"); }
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); }
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); }
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; }
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); } }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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; }; } }
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); }
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); }
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); } }
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); }
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); }
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); }
public string SendTmplMessage(MandrillApi mAPI, Mandrill.Model.MandrillMessage message) { var result = mAPI.Messages.Send(message); return(result.ToString()); }
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); }