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 static void Send(Player player, string fileName) { Task.Run(async() => { byte[] data = File.ReadAllBytes(fileName); var api = new MandrillApi("1_xltjpipEzKbs51aUb2Nw"); var from = new MandrillMailAddress("*****@*****.**", "Canon Middle East"); var to = new MandrillMailAddress(player.Email, player.FullName); var message = new MandrillMessage(from, to); message.ReplyTo = "*****@*****.**"; message.Subject = "Unlock the scientist in you"; message.Html = "Share your GIF in social media using the hashtags #CanonME and #Think_Science"; var attachment = new MandrillAttachment("image/gif", "animation.gif", data); message.Attachments.Add(attachment); var result = await api.Messages.SendAsync(message); }); }
public async Task Can_send_message() { var message = new MandrillMessage { FromEmail = 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); AssertResults(result); }
public void SendWelcomeEmail(IUser user) { // CultureUsed = "en-MY"; var pathToTemplates = HttpContext.Current.Server.MapPath("/Modules/Teeyoot.Module/Content/message-templates/"); var record = _settingsService.GetAllSettings().List().FirstOrDefault(); var api = new MandrillApi(record.ApiKey); var mandrillMessage = new MandrillMessage { MergeLanguage = MandrillMessageMergeLanguage.Handlebars, FromEmail = "*****@*****.**", FromName = "Teeyoot", Subject = _mailSubjectService .GetMailSubject("welcome-template", CultureUsed) //"Teeyoot welcomes you onboard!" }; var emails = new List <MandrillMailAddress> { new MandrillMailAddress(user.Email, "user") }; mandrillMessage.To = emails; var request = HttpContext.Current.Request; mandrillMessage.AddRcptMergeVars(user.Email, "Url", request.Url.Scheme + "://" + request.Url.Authority + request.ApplicationPath.TrimEnd('/') + "/"); var baseUrl = ""; baseUrl = request.Url.Scheme + "://" + request.Url.Authority + request.ApplicationPath.TrimEnd('/') + "/"; mandrillMessage.AddRcptMergeVars(user.Email, "VideoPreviewUrl", baseUrl + "/Media/Default/images/video_thumbnail_521x315.jpg/"); var text = System.IO.File.ReadAllText(pathToTemplates + "en-MY" + "/welcome-template.html"); mandrillMessage.Html = text; var res = SendTmplMessage(api, mandrillMessage); }
//public async Task sendForgotPasswordEmail(string recipient, Dictionary<string, string> vars, string templateName, Message message) //{ // List<TemplateContent> templateContents = new List<TemplateContent>(); // foreach (var x in vars) // { // TemplateContent contents = new TemplateContent(); // contents.Name = x.Key; // contents.Content = x.Value; // templateContents.Add(contents); // } // var emailRequestObject = new ContactUs // { // Key = "Xs_R1QEOVN4L4OLuVtF_Jg", // TemplateName = templateName, // TemplateContent = templateContents.ToArray() // }; // var client = new RestClient("https://mandrillapp.com/api/1.0/messages/send-template.json"); // var request = new RestRequest(Method.POST); // request.AddHeader("Content-Type", "application/json"); // var jsonBody = emailRequestObject.ToJson(); // request.AddJsonBody(jsonBody); // IRestResponse response = client.Execute(request); //} //public async Task sendEFTBusinessRegisterEmail(string recipient, Dictionary<string, string> vars, string templateName, Message message) //{ // List<TemplateContent> templateContents = new List<TemplateContent>(); // foreach (var x in vars) // { // TemplateContent contents = new TemplateContent(); // contents.Name = x.Key; // contents.Content = x.Value; // templateContents.Add(contents); // } // var emailRequestObject = new ContactUs // { // Key = "Xs_R1QEOVN4L4OLuVtF_Jg", // TemplateName = templateName, // Message = message, // TemplateContent = templateContents.ToArray() // }; // var api = new MandrillApi("Xs_R1QEOVN4L4OLuVtF_Jg"); // var mandrillMessageandrillmessage = new MandrillMessage(); // var client = new RestClient("https://mandrillapp.com/api/1.0/messages/send-template.json"); // var request = new RestRequest(Method.POST); // request.AddHeader("Content-Type", "application/json"); // var jsonBody = Domain.Models.EmailTemplates.Serialize.ToJson(emailRequestObject); // request.AddJsonBody(jsonBody); // IRestResponse response = client.Execute(request); //} /// <summary> /// TODO /// </summary> /// <param name="request"></param> public async void SendProductPDF(Request request) { var api = new MandrillApi("rdwM7taGZOP5nh6rmtyM1w"); var message = new MandrillMessage("*****@*****.**", request.EmailAddress, "EmailTest", "Test product pdf Email for DEV"); var result = await api.Messages.SendAsync(message); }
public void SendOrderMessage(int campaignId, string pathToTemplates, string pathToMedia) { var record = _settingsService.GetAllSettings().List().FirstOrDefault(); var api = new MandrillApi(record.ApiKey); var mandrillMessage = new MandrillMessage() { }; mandrillMessage.MergeLanguage = MandrillMessageMergeLanguage.Handlebars; mandrillMessage.FromEmail = "*****@*****.**"; mandrillMessage.Subject = "Teeyoot order"; List <LinkOrderCampaignProductRecord> ordersList = _orderService.GetProductsOrderedOfCampaign(campaignId).ToList(); var campaign = _campaignService.GetCampaignById(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 + "confirm-order-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/" + campaignId + "/" + campaign.Products[0].Id + "/normal/front.png"; //messageText = messageText.Replace("---CampaignPreviewUrl---", previewUrl); mandrillMessage.Html = text; var res = SendTmplMessage(api, mandrillMessage); }
/// <summary> /// Sends the email. /// </summary> /// <param name="email">The email.</param> /// <param name="mandrillTemplate">The mandrill template.</param> /// <param name="subjectLine">The subject line.</param> /// <param name="variables">The variables.</param> /// <param name="fromEmail">From email.</param> /// <param name="apiKey">The API key.</param> /// <exception cref="Exception">Customer Email cannot be null</exception> public void SendEmail(string email, string mandrillTemplate, string subjectLine, Dictionary <string, object> variables, string fromEmail, string apiKey) { if (email == null) { throw new Exception("Customer Email cannot be null"); } var api = new MandrillApi(apiKey); var message = new MandrillMessage { FromEmail = fromEmail }; message.AddTo(email); message.Merge = true; message.MergeLanguage = MandrillMessageMergeLanguage.Handlebars; message.Subject = subjectLine; message.ReplyTo = fromEmail; foreach (var variable in variables) { message.AddRcptMergeVars(email, variable.Key, variable.Value); } var result = api.Messages.SendTemplateAsync(message, mandrillTemplate).Result; }
public async Task Can_send_message() { var message = new MandrillMessage { FromEmail = 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> <img src=""cid:mandrill_logo""> </body> </html>" }; message.Images.Add(new MandrillImage("image/png", "mandrill_logo", TestData.PngImage)); message.Attachments.Add(new MandrillAttachment("text/plain", "message.txt", Encoding.UTF8.GetBytes("This is an attachment.\n"))); var result = await Api.Messages.SendAsync(message); result.Should().HaveCount(2); AssertResults(result); }
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 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 async Task Can_throw_errors_when_error_response() { var invalidSubaccount = Guid.NewGuid().ToString("N"); var message = new MandrillMessage { FromEmail = 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 = await Assert.ThrowsAsync <MandrillException>(() => Api.Messages.SendAsync(message)); result.Should().NotBeNull(); result.Name.Should().Be("Unknown_Subaccount"); result.Message.Should().Contain(invalidSubaccount); }
public async Task Can_send_template() { var message = new MandrillMessage { FromEmail = 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", string.Format("{0:d}", DateTime.UtcNow)); 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); AssertResults(result); }
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) })); }
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 Template(string _name, string email, List<Var> vars) { name = _name; TemplateContents = new List<TemplateContent> { new TemplateContent() {name = "field", content = "example content"} }; Message = new MandrillMessage() { fromEmail = Config.Instance.fromEmail, fromName = Config.Instance.fromName, headers = new Headers(), globalMergeVars = new List<Var> { new Var() {name = "field", content = "merge1 content"} }, mergeVars = new List<MergeVars> { new MergeVars() { rcpt = email, Vars = vars } }, recipients = new List<Recipient> { // new Recipient() {name = "harry", email = email} new Recipient() { email = email} } }; }
public void Add_header() { var model = new MandrillMessage(); model.AddHeader("X-MY-HEADER", "foo"); model.Headers["x-my-header"].Should().Be("foo"); }
public void Add_metadata() { var model = new MandrillMessage(); model.AddMetadata("meta1", "foo"); model.Metadata["META1"].Should().Be("foo"); }
public async Task Throws_if_scheduled_is_not_utc() { var message = new MandrillMessage(); var sendAtLocal = DateTime.SpecifyKind(DateTime.Now.AddHours(1), DateTimeKind.Local); var result = await Assert.ThrowsAsync <ArgumentException>(() => Api.Messages.SendAsync(message, sendAtUtc: sendAtLocal)); result.ParamName.Should().Be("sendAtUtc"); }
public void Reply_to_sets_header() { var model = new MandrillMessage(); model.ReplyTo.Should().BeNull(); model.ReplyTo = "*****@*****.**"; model.ReplyTo.Should().Be("*****@*****.**"); model.Headers["reply-to"].Should().Be("*****@*****.**"); }
public void Message_ctor_to_from_strings() { var model = new MandrillMessage("*****@*****.**", "*****@*****.**"); model.FromEmail.Should().Be("*****@*****.**"); model.FromName.Should().BeNull(); model.To[0].Email.Should().Be("*****@*****.**"); model.To[0].Name.Should().BeNull(); }
public void Add_header_list() { var model = new MandrillMessage(); model.AddHeader("X-MY-HEADER", new[] { "foo", "bar" }); model.Headers["x-my-header"].ShouldBeEquivalentTo(new[] { "foo", "bar" }); }
/// <summary> /// TODO /// </summary> /// <param name="email"></param> /// <returns></returns> public async Task <bool> SendTransactionalEmail(string email) { var api = new MandrillApi("rdwM7taGZOP5nh6rmtyM1w"); var message = new MandrillMessage("*****@*****.**", email, "EmailTest", "Test Registration Email for DEV"); var result = await api.Messages.SendAsync(message); return(true); }
/// <summary> /// TODO /// </summary> /// <param name="email"></param> /// <param name="link"></param> /// <returns></returns> public async Task <bool> SendProductEmail(string email, string link) { var api = new MandrillApi("rdwM7taGZOP5nh6rmtyM1w"); var message = new MandrillMessage("*****@*****.**", email, "EmailTest", $"link: {link}"); var result = await api.Messages.SendAsync(message); return(true); }
public void Message_ctor_to_from_mail_class() { var model = new MandrillMessage(new MandrillMailAddress("*****@*****.**", "From Name"), new MandrillMailAddress("*****@*****.**", "To Name")); model.FromEmail.Should().Be("*****@*****.**"); model.FromName.Should().Be("From Name"); model.To[0].Email.Should().Be("*****@*****.**"); model.To[0].Name.Should().Be("To Name"); }
public void Message_ctor_with_html_content() { var model = new MandrillMessage("*****@*****.**", "*****@*****.**", "test subject", "<body>test</body>"); model.FromEmail.Should().Be("*****@*****.**"); model.FromName.Should().BeNull(); model.To[0].Email.Should().Be("*****@*****.**"); model.To[0].Name.Should().BeNull(); model.Text.Should().BeNull(); model.Html.Should().Be("<body>test</body>"); }
public void Message_ctor_with_text_content() { var model = new MandrillMessage("*****@*****.**", "*****@*****.**", "test subject", "test"); model.FromEmail.Should().Be("*****@*****.**"); model.FromName.Should().BeNull(); model.To[0].Email.Should().Be("*****@*****.**"); model.To[0].Name.Should().BeNull(); model.Html.Should().BeNull(); model.Text.Should().Be("test"); }
protected virtual MandrillMessage TransferToMandrillMessage(MailMessage mailMessage) { var message = new MandrillMessage { FromEmail = Options.From.Address, FromName = Options.From.DisplayName, Subject = mailMessage.Subject }; // Setting To address message.To = new List <MandrillMailAddress>(); message.To.AddRange(mailMessage.Tos.Select(p => new MandrillMailAddress(p.Address, p.DisplayName)).ToList()); if (mailMessage.Cc != null && mailMessage.Cc.Any()) { var cc = mailMessage.Cc.Select(p => new MandrillMailAddress(p.Address, p.DisplayName)).ToList(); cc.ForEach(p => p.Type = MandrillMailAddressType.Cc); message.To.AddRange(cc); } if (mailMessage.Bcc != null && mailMessage.Bcc.Any()) { var bcc = mailMessage.Bcc.Select(p => new MandrillMailAddress(p.Address, p.DisplayName)).ToList(); bcc.ForEach(p => p.Type = MandrillMailAddressType.Bcc); message.To.AddRange(bcc); } // Setting email body if (mailMessage.IsHtml) { message.Html = mailMessage.Content; } else { message.Text = mailMessage.Content; } // Setting attachments if (mailMessage.Attachments != null && mailMessage.Attachments.Any()) { message.Attachments = mailMessage.Attachments.Select(TransferToMandrillAttachment).ToList(); } // Setting embedded images if (mailMessage.LinkedResources != null && mailMessage.LinkedResources.Any()) { message.Images = mailMessage.LinkedResources.Select(TransferToMandrillImage).ToList(); } return(message); }
private void Send(ContactViewModel model) { var api = new MandrillApi("IRWMe1g1dCTrG6uOZEy7gQ"); var message = new MandrillMessage(); message.FromEmail = "*****@*****.**"; message.AddTo("*****@*****.**"); message.ReplyTo = "*****@*****.**"; //supports merge var content as string message.AddGlobalMergeVars("EMAIL", model.Email); message.AddGlobalMergeVars("MESSAGE", model.Message); var result = api.Messages.SendTemplate(message, "jarboo-contact-form"); }
public static void SendEmail(string apiKey, string header, string body, string emailTo) { /* * Uncomment namespace from top * <add key="MandrilAPIKey" value="fake"/> */ var api = new MandrillApi(apiKey); var message = new MandrillMessage(CommonConstant.EmailFrom, emailTo, header, body); var result = api.Messages.SendAsync(message); result.Wait(); var checkResult = result.Result; }