public void CampaignCreate_Successful() { // Arrange MailChimpManager mc = new MailChimpManager(TestGlobal.Test_APIKey); ListResult lists = mc.GetLists(); string listID = lists.Data[1].Id; CampaignSegmentOptions segmentOptions = new CampaignSegmentOptions(); segmentOptions.Match = "All"; string dateListCreated = lists.Data[1].DateCreated; segmentOptions.Conditions = new List <CampaignSegmentCriteria>(); segmentOptions.Conditions.Add(new CampaignSegmentCriteria { Field = "date", Operator = "eq", Value = dateListCreated }); CampaignCreateContent content = new CampaignCreateContent(); content.HTML = "<p>Testing</p>"; CampaignCreateOptions options = new CampaignCreateOptions(); options.Title = "Testing"; options.ListId = listID; options.ToName = "Test Name"; options.FromEmail = "*****@*****.**"; options.FromName = "Testing Company Name"; options.Subject = "Test Subject"; //Act Campaign result = mc.CreateCampaign("regular", options, content, segmentOptions, null); // Assert Assert.IsNotNull(result); }
public void SendCampaign() { if ((cmbTemplate.SelectedIndex > 0 && cmbTemplate.SelectedItem != null) && (cmbList.SelectedIndex > 0 && cmbList.SelectedItem != null)) { Int32 selectedTemplateId = Convert.ToInt32(cmbTemplate.SelectedValue); string selectedListId = cmbList.SelectedValue.ToString(); //IEnumerable<string> listEnum = new string[] { selectedListId.ToString() }; //--Create Campaign CampaignSegmentOptions segmentOptions = new CampaignSegmentOptions(); segmentOptions.Match = "All"; CampaignCreateOptions options = new CampaignCreateOptions(); options.Title = mailchimptitle; options.ListId = selectedListId; options.ToName = mailchimpToName; options.FromEmail = mailchimpFromEmail; options.FromName = mailchimpFromName; options.Subject = mailchimpSubject; options.TemplateID = selectedTemplateId; CampaignCreateContent content = new CampaignCreateContent(); Campaign result = mc.CreateCampaign("regular", options, content, null, null); //GetMemberInfo if (chkEnableSMS.Checked) { List <EmailParameter> emails = new List <EmailParameter>(); MembersResult results = mc.GetAllMembersForList(selectedListId, "subscribed", 0, 100); foreach (var i in results.Data) { foreach (var j in i.MemberMergeInfo) { if (j.Key.Trim() == "PHONE") { if (!string.IsNullOrEmpty(j.Value.ToString())) { // SmsSender.SendSMS(j.Value.ToString(), "919460264151", "5b2a23d7", "59d9fa03", Uri.EscapeUriString("Test Message")); } } } } } } MessageBox.Show("Success"); this.Close(); }
static void GenerateAndSendNewsletter() { // Load articles from db // NOTE: articles selected tightly coupled to datetime when this method is run var payload = NewsletterGenerator.GetLoadedPayload(); // @TODO: Create newsletter record in db // @TODO: Associate articles with newsletter // Create html for newsletter string formattedArticles = NewsletterGenerator.FormatPayload(payload); string template = System.IO.File.ReadAllText("Newsletter/SlackerWeeklyTemplate.html"); string email = template.Replace(NewsletterGenerator.TemplateReplacementTag, formattedArticles); // Upload via MailChimp API //var mc = new MailChimp.Campaigns.Campaign(); MailChimpManager mc = new MailChimpManager(Settings.Get(Settings.AppSettingKeys.MailChimpApiKey)); string subject = payload.GetSubjectLine(); var response = mc.CreateCampaign("regular", new MailChimp.Campaigns.CampaignCreateOptions { ListId = Settings.Get(Settings.AppSettingKeys.MailChimpListId), FromName = "Slacker Weekly", FromEmail = "*****@*****.**", Subject = subject, Title = "SlackerWeekly for " + DateTimeHelpers.ThisWeekFormatted, // For reporting purposes inside MailChimp Authenticate = true, // SPF, DKIM, etc. GenerateText = true, // auto generate plaintext version from HTML version InlineCSS = true }, new MailChimp.Campaigns.CampaignCreateContent { HTML = email, }, null, null); // Control scheduling by when you call this method, i.e. windows task scheduler // Target is 5pm UTC Mondays, which translates to: // 9am PST Monday // 10am PDT Monday string campaignId = response.Id; NLog.LogManager.GetCurrentClassLogger().Info("Created campaign on MailChimp. Received campaingId: " + campaignId); mc.SendCampaign(campaignId); NLog.LogManager.GetCurrentClassLogger().Info("Sent Campaign " + campaignId); }
public void CampaignCreate_Successful() { // Arrange MailChimpManager mc = new MailChimpManager(TestGlobal.Test_APIKey); ListResult lists = mc.GetLists(); string listID = lists.Data[1].Id; CampaignSegmentOptions segmentOptions = new CampaignSegmentOptions(); segmentOptions.Match = "All"; string dateListCreated = lists.Data[1].DateCreated; segmentOptions.Conditions = new List<CampaignSegmentCriteria>(); segmentOptions.Conditions.Add(new CampaignSegmentCriteria { Field = "date", Operator = "eq", Value = dateListCreated }); CampaignCreateContent content = new CampaignCreateContent(); content.HTML = "<p>Testing</p>"; CampaignCreateOptions options = new CampaignCreateOptions(); options.Title = "Testing"; options.ListId = listID; options.ToName = "Test Name"; options.FromEmail = "*****@*****.**"; options.FromName = "Testing Company Name"; options.Subject = "Test Subject"; //Act Campaign result = mc.CreateCampaign("regular", options, content, segmentOptions, null); // Assert Assert.IsNotNull(result); }
private static void CreateCampaign() { // Arrange MailChimpManager mc = new MailChimpManager("e20533551f21cbc6b07c76e570dc33c4-us11"); //ListResult lists = mc.GetLists(); //string listID = lists.Data[0].Id; CampaignSegmentOptions segmentOptions = new CampaignSegmentOptions(); segmentOptions.Match = "All"; //string dateListCreated = lists.Data[0].DateCreated; segmentOptions.Conditions = new List<CampaignSegmentCriteria>(); segmentOptions.Conditions.Add(new CampaignSegmentCriteria { Field = "date", Operator = "eq"}); CampaignCreateContent content = new CampaignCreateContent(); content.HTML = @" <meta charset='utf-8'> <title></title> <table width='600' border='0' align='center' cellpadding='0' cellspacing='0' style='background-color: #f0eeee; padding: 20px;'> <tbody><tr> <td> <table width='600' border='0' align='center' cellpadding='0' cellspacing='0'> <tbody><tr> <td style='background-color: #ffa900; padding: 10px 30px;'> <img src='http://*****:*****@desme.com"; options.FromName = "Testing Company Name"; options.Subject = "Email template testing"; Campaign result = mc.CreateCampaign("regular", options, content); }
public string CreateCampaignMailChimp(string idCampaign) { string idList = null; string apiKey = null; int idTemplate = 0; string subject = ""; string fromEmail = ""; string fromName = ""; var campaign = GetCampaignById(idCampaign); var product = GetProductByIdProduct(campaign.PRODUCT.IdProduct); try { if (product.PRODUCT_SETTINGS != null && product.PRODUCT_SETTINGS.Any()) { foreach (var item in product.PRODUCT_SETTINGS) { apiKey = item.SettingName.Equals("mailChimpApiToken") ? item.SettingValue : apiKey; idList = item.SettingName.Equals("mailChimpList") ? item.SettingValue : idList; idTemplate = item.SettingName.Equals("mailChimpTemplate") ? Convert.ToInt32(item.SettingValue) : idTemplate; } } if (campaign.CAMPAIGN_SETTINGS != null && campaign.CAMPAIGN_SETTINGS.Any()) { foreach (var setting in campaign.CAMPAIGN_SETTINGS) { subject = setting.SettingName.Equals("mailChimpSubject") ? setting.SettingValue : subject; fromName = setting.SettingName.Equals("mailChimpFromName") ? setting.SettingValue : fromName; fromEmail = setting.SettingName.Equals("mailChimpFromEmail") ? setting.SettingValue : fromEmail; } } CampaignCreateOptions cco = new CampaignCreateOptions() { ListId = idList, Title = campaign.Name, Subject = subject, FromEmail = fromEmail, FromName = fromName }; Dictionary <string, string> sections = new Dictionary <string, string>(); if (product.SITE.CATEGORY != null && product.SITE.CATEGORY.Any()) { foreach (var item in product.SITE.CATEGORY) { sections.Add(item.IdCategory.ToString(), item.Description); } } CampaignCreateContent ccc = new CampaignCreateContent() { Sections = sections, HTML = campaign.AdText }; IMailChimpManager mailChimpManager = new MailChimpManager(apiKey); var campaignMailChimp = mailChimpManager.CreateCampaign("regular", cco, ccc, null, null); if (campaign != null && !String.IsNullOrEmpty(campaignMailChimp.Id)) { var resultSendCampaign = mailChimpManager.SendCampaign(campaignMailChimp.Id); return(resultSendCampaign.Complete ? campaignMailChimp.Id : null); } } catch (Exception e) { var messageException = telemetria.MakeMessageException(e, System.Reflection.MethodBase.GetCurrentMethod().Name); telemetria.Critical(messageException); } return(null); }
public string SendCampaign(int campaignId, string campaignName, IEnumerable <EmailRecipient> emails, IEnumerable <Company> Companies, string title, string subject, string content, string fromEmail, string fromName, string campaignKey, int accountId, byte?campaignType, string listName = null) { content = content.Replace("*|CAMPID|*", campaignId.ToString()).Replace("<o:p>", "").Replace("</o:p>", "");//.FormatHTML(); campaignName = Guid.NewGuid().ToString(); var campaignCreateContent = campaignType == 132 ? new CampaignCreateContent { Text = content } : new CampaignCreateContent { HTML = content }; var campaignCreateOptions = new CampaignCreateOptions { Title = title, FromEmail = fromEmail, FromName = fromName, Subject = subject, }; var list = default(ListInfo); if (string.IsNullOrWhiteSpace(listName)) { list = mailChimpManager.GetLists().Data[0]; } else { list = mailChimpManager.GetLists().Data.Where(li => string.Equals(li.Name, listName, StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); } campaignCreateOptions.ListId = list.Id; campaignCreateOptions.AutoFooter = false; //subscribe every id to the list var batchEmailParameters = new List <BatchEmailParameter>(); var emailParameters = new List <EmailParameter>(); IEnumerable <string> mergervarlist = new List <string> { list.Id }; MergeVarResult resultdata = mailChimpManager.GetMergeVars(mergervarlist); IEnumerable <MergeVarItemResult> mergevardata = resultdata.Data.Select(x => x.MergeVars).FirstOrDefault(); // delete all mergervars foreach (var mergevar in mergevardata) { try { mailChimpManager.DeleteMergeVar(list.Id, mergevar.Tag); } catch (Exception ex) { Logger.Current.Error("Exception" + ex); } } //add mergevars var pc = emails.FirstOrDefault(); var fields = (pc.ContactFields != null) ? pc.ContactFields.Keys : new List <string>(); var defaultValue = string.Empty; var displayName = string.Empty; foreach (var field in fields) { if (field.Contains("CF") || field.Contains("DF")) { defaultValue = "XXXXX"; displayName = field; } else { var propInfo = typeof(RecipientMergeVar).GetProperties().Where(p => p.Name == field).FirstOrDefault(); if (propInfo != null) { displayName = propInfo.GetCustomAttributes(typeof(DisplayNameAttribute), true).Cast <DisplayNameAttribute>().FirstOrDefault().DisplayName; } } mailChimpManager.AddMergeVar(list.Id, field, displayName, new MergeVarOptions() { FieldType = "text", DefaultValue = defaultValue }); } //set merge vars string replaceValue = string.Empty; foreach (var contact in emails) { var rmv = new RecipientMergeVar(); if (contact.ContactFields != null && contact.ContactFields.Keys != null) { var keys = contact.ContactFields.Keys; var properties = rmv.GetType().GetProperties(); foreach (var key in keys) { replaceValue = contact.ContactFields[key].ToString(); if (key.Contains("CF") || key.Contains("DF")) { //TODO /* * Write code to handle muliti select custom field. */ try { mailChimpManager.SetMergeVar(list.Id, key, replaceValue); } catch (MailChimp.Errors.MailChimpAPIException e) { ExceptionHandler.Current.HandleException(e, DefaultExceptionPolicies.LOG_ONLY_POLICY); } catch (Exception e) { ExceptionHandler.Current.HandleException(e, DefaultExceptionPolicies.LOG_ONLY_POLICY); } } else { var pi = properties.Where(p => p.Name == key).FirstOrDefault(); if (pi != null) { pi.SetValue(rmv, replaceValue); } } } } batchEmailParameters.Add(new BatchEmailParameter { Email = new EmailParameter { Email = contact.EmailId }, MergeVars = rmv }); emailParameters.Add(new EmailParameter { Email = contact.EmailId }); } mailChimpManager.BatchSubscribe(list.Id, batchEmailParameters, doubleOptIn: false, updateExisting: true, replaceInterests: false); var segmentResult = mailChimpManager.AddStaticSegment(list.Id, campaignName); mailChimpManager.AddStaticSegmentMembers(list.Id, segmentResult.NewStaticSegmentID, emailParameters); var segmentOptions = new CampaignSegmentOptions(); segmentOptions.Match = "All"; segmentOptions.Conditions = new List <CampaignSegmentCriteria>(); segmentOptions.Conditions.Add(new CampaignSegmentCriteria { Field = "static_segment", Operator = "eq", Value = segmentResult.NewStaticSegmentID.ToString() }); string cId = ""; try { Campaign result = mailChimpManager.CreateCampaign("regular", campaignCreateOptions, campaignCreateContent, segmentOptions, null); cId = result.Id; mailChimpManager.SendCampaign(cId); } catch (MailChimp.Errors.MailChimpAPIException e) { ExceptionHandler.Current.HandleException(e, DefaultExceptionPolicies.LOG_AND_RETHROW_POLICY); } return(cId); }