Closed JJGSS closed 8 years ago
static List<string> MergeFields()
{
MailChimpManager mc = new MailChimpManager("YourApiKeyHere-us2");
List<string> MergefieldsList = new List<string>();
MergeVarResult MergeFields = mc.GetMergeVars(new List<string> { "ListIDHere" });
foreach (MergeVarListResult fields in MergeFields.Data)
{
foreach (MergeVarItemResult field in fields.MergeVars)
{
MergefieldsList.Add(field.Tag);
}
}
return MergefieldsList;
}
Thanks, that will really help.
no problems, let me know if you run into any issues
Well... I can get the names of the fields from your code, but I can't seem to get the values. I changed the code so it receives the person, but it is wrong!
private List<string> MergeFields(person p)
{
List<string> MergefieldsList = new List<string>(); //the result
MergeVarResult MergeFields = mc.GetMergeVars(new List<string> { p.Id });
foreach (MergeVarListResult fields in MergeFields.Data) {
foreach (MergeVarItemResult field in fields.MergeVars) {
MessageBox.Show("Tag= " + field.Tag + " Name= " + field.Name);
MergefieldsList.Add(field.Tag);
//MergefieldsList.Add(field.Name);
}
}
return MergefieldsList
This should return the value of FNAME for each member in a list. It could be expanded out to include the other merge fields by using the code above. Let me know how you go.
public List<String> LoadContactList(string ListID)
{
MailChimpManager mc = new MailChimp.MailChimpManager("APIKey here");
List<String> contactList = new List<String>();
int total = 25;
int counter = 0;
int subcounter = 0;
while ((counter <= total))
{
MembersResult result = mc.GetAllMembersForList(ListID, start: subcounter, limit: 25);
MergeVar MerageVars;
foreach (MemberInfo member in result.Data)
{
MerageVars = member.MemberMergeInfo;
string FirstName = "";
if (MerageVars["FNAME"] != null)
{
FirstName = MerageVars["FNAME"].ToString();
}
contactList.Add(FirstName);
}
total = result.Total;
counter = (counter + 25);
subcounter++;
}
return contactList;
}
Brilliant, that's what I needed, thanks.
My code is: ` private void ReadLists() { string LNAME=""; string FNAME=""; string MMERGE3=""; try { SetUpChimpLists();
ListResult lists = mc.GetLists();
string subscribed = "unsubscribed";
int j;
Boolean bSub;
j = lists.Total;
var members = new List<person>();
string HashCode;
// For each list
foreach (var list in lists.Data)
{
// Write out the list name:
textBox1.Text = textBox1.Text + "Users for the list " + list.Name + Environment.NewLine;
for (int k = 0; k < 2; k++) //Once for subscribed, once for unsubscribed
{
if (k == 1) subscribed = "subscribed";
else subscribed = "unsubscribed";
HashCode = list.Id;
Boolean cont = true;
int StartAt = 0;
while (cont)
{
MembersResult results = mc.GetAllMembersForList(HashCode, subscribed, StartAt, 100);
int i = 0;
//Array.Clear(members, 0, members.Length);
members.Clear();
MergeVar MyMergeVars;
// Write out each member's email address:
foreach (var member in results.Data)
{
if (list.Name == "Education HL359")
{
listBox1.Items.Add(member.Email.ToString() + ": " + subscribed);
}
else
{
listBox2.Items.Add(member.Email.ToString() + ": " + subscribed);
}
MyMergeVars = member.MemberMergeInfo;
try
{
FNAME = MyMergeVars["FNAME"].ToString();
}
catch { FNAME = ""; };
try { LNAME = MyMergeVars["LNAME"].ToString(); } catch { LNAME = ""; };
try { MMERGE3 = MyMergeVars["MMERGE3"].ToString(); } catch { MMERGE3 = ""; };
members.Add(new person {
Id = member.Id.ToString(),
Email = member.Email.ToString(),
FNAME = FNAME,
LNAME = LNAME,
MMERGE3 = MMERGE3
});
i++;
}
bSub = (subscribed == "subscribed");
//MessageBox.Show(bSub.ToString());
UpdateSql(members, HashCode, bSub);
if (i >= 100) //used up all 100 places
{
StartAt ++;
}
else
{
cont = false;
}
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}`
Hi, I need an example to show retrieving the merge Vars: FNAME, LNAME etc for a list. Has anyone got one they can let be have to work on.