private Dictionary <string, string> GetErrors(DataTable subscribers, List.BatchSubscribe lbs) { Dictionary <string, string> errors = new Dictionary <string, string>(); if (lbs.ErrorCount == 0) { return(errors); } //DataColumn hasErrColum = subscribers.Columns.Add("HasError", typeof(bool)); //DataColumn errMessageColum = subscribers.Columns.Add("ErrorMessage", typeof(string)); foreach (List.BatchError bErr in lbs.Errors) { // string filterExp = string.Format(@"Email = '{0}'", bErr.Email); DataRow errRows = subscribers.Rows.Find(bErr.Email); if (errors.ContainsKey(bErr.Email)) { errors[bErr.Email] += ";" + bErr.Message; } else { errors.Add(bErr.Email, bErr.Message); } } return(errors); }
} // SubscriberToEntry public void ListBatchSubscribe(string listId, List <Subscriber> subscriberList) { var batch = new List <List.Merges>(); foreach (Subscriber subscriber in subscriberList) { batch.Add(SubscriberToEntry(subscriber, s => s.Email)); if (!string.IsNullOrWhiteSpace(subscriber.BrokerEmail)) { batch.Add(SubscriberToEntry(subscriber, s => s.BrokerEmail)); } } // for each subscriber var options = new List.SubscribeOptions { DoubleOptIn = false, EmailType = List.EmailType.Html, SendWelcome = false, UpdateExisting = true, ReplaceInterests = true, }; List.BatchSubscribe batchSubscribe = m_oMcApi.ListBatchSubscribe(listId, batch, options); ms_oLog.Debug("ListBatchSubscribe Result: AddCount: {0} UpdateCount: {1} ErrorCount{2}.", batchSubscribe.AddCount, batchSubscribe.UpdateCount, batchSubscribe.ErrorCount); if (batchSubscribe.ErrorCount > 0) { foreach (var error in batchSubscribe.Errors) { ms_oLog.Error("List.BatchSubscribe error: " + error.Message + " email:" + error.Email + " code:" + error.Code); } } } // ListBatchSubscribe
public Dictionary <string, string> SubscribeBatch(DataTable subscribers) { var mc = new MCApi(_apiKey, true); var subscribeOptions = new List.SubscribeOptions { DoubleOptIn = false, SendWelcome = true, UpdateExisting = true, }; var merges = new List <List.Merges>(); Dictionary <int, string> fields = GetFieldsName(subscribers); try { subscribers.Columns["EMAIL"].AllowDBNull = false; } catch (Exception ex) { throw new DuradosException("Email is missing", ex); } try { subscribers.PrimaryKey = new DataColumn[] { subscribers.Columns["EMAIL"] }; } catch (Exception ex) { throw new DuradosException("Email must be unique", ex); } foreach (DataRow row in subscribers.Rows) { var merge = new List.Merges(); for (int i = 0; i < subscribers.Columns.Count; i++) { string val = row[i].ToString(); if (subscribers.Columns[i].DataType == typeof(bool)) { val = Convert.ToInt32(row.IsNull(i) ? false : row[i]).ToString(); } merge.Add(fields[i], val); } merges.Add(merge); } if (merges.Count == 0) { return(null); } List.BatchSubscribe lbs = mc.ListBatchSubscribe(_listId, merges, subscribeOptions); return(GetErrors(subscribers, lbs)); }