获取列表的所有成员

时间:2015-03-31 15:11:29

标签: c# mailchimp

我正在尝试下载列表中的所有成员(超过50000),但我找不到任何方法在MailChimp API中执行此操作。 另一方面,我尝试使用如下所示的“GetAllMembersForList”方法,但它没有得到所有这些(他只得到600)。

如果有其他方式可以下载这些会员名单,有人可以告诉我吗?

    public List<string> GetListMembers(string membersList)
    {
        ListResult lists = mc.GetLists();
        List<string> li = new List<string>();
        foreach(var list in lists.Data)
        {
            if (list.Name == membersList)
            {
                MembersResult res;
                for (int i = 0; i <= list.Stats.MemberCount; i = i + 100)
                {
                    res = new MembersResult();
                    res = mc.GetAllMembersForList(list.Id, "subscribed", i, 100);

                    foreach (var member in res.Data)
                        li.Add(member.Email);
                }
                break;
            }
        }
        return li;
    }

3 个答案:

答案 0 :(得分:1)

我认为这是因为api限制/限制。但你可以请求支持帮助。 https://apidocs.mailchimp.com/help/

答案 1 :(得分:1)

我终于找到了解决方案。我在这里找到了https://apidocs.mailchimp.com/export/1.0/list.func.php,我实现了类似下面的内容。 我完全相信有人可以改进这一点,但这是我当时需要的东西。

以下是有人想要实施的代码:

     public List<string> GetListMembers(string membersList, string status, string since = "")
    {
        List<string> li = new List<string>();
        //to see what does <dc> means? follow this link https://apidocs.mailchimp.com/api/rtfm/
        string linkPage = @"http://<dc>.api.mailchimp.com/export/1.0/list/?apikey={0}&id={1}&status={2}{3}";
        ListInfo list = mc.GetLists().Data.Where(x => x.Name == membersList).FirstOrDefault();
        linkPage = string.Format(linkPage, conectionMailChimp, list.Id, status, !string.IsNullOrEmpty(since) ? "&since=" + since : string.Empty);

        WebClient wc = new WebClient();
        string text = wc.DownloadString(linkPage);
        text = text.Replace("\"", "");
        string[] res = text.Split(new[] { "]\n[" }, StringSplitOptions.None);

        for (int i = 1; i < res.Length; i++)
            li.Add(res[i].Split(new[] { "," }, StringSplitOptions.None)[0].ToString());

        return li;
    }

答案 2 :(得分:0)

要在一次通话中获得所有成员(实际上很少需要),您可以使用Export API。否则,您最好的选择是使用分页功能并一次下载600。