从MailGun中提取邮件列表地址



我想把地址从MailGun中提取出来,放到一个CSV文件中,然后把MailGun全部删除。MailGun数据库是951个地址的唯一副本,除了查看MailGun中的列表外,我绝对不能以任何形式访问该数据库。

http://documentation.mailgun.com/api-mailinglists.html邮件清单

这是我在 c# 中解决这个问题的方法,它可以获得列表的所有成员(不仅仅是100个有限的)。另外,我使用Newtonsoft.Json。更新:我发现'total_count'有一个最大值10000,所以如果你的邮件列表中的成员超过10000,请求将返回最大值10000!在这种情况下,这不是一个很好的解决方案!

public void ExportMailList(string listName)
    {
        RestClient client = new RestClient();
        List<MemberDetail> totalMember = new List<MemberDetail>();
        client.BaseUrl = new Uri("https://api.mailgun.net/v3");
        client.Authenticator =
                new HttpBasicAuthenticator("api",
                                           "key-yourKey");
        RestRequest reqForTotal = new RestRequest();
        reqForTotal.Resource = "lists/{list}/members";
        reqForTotal.AddParameter("list", listName, ParameterType.UrlSegment);
        int resultTotal= JsonConvert.DeserializeObject<Member>(client.Execute(reqForTotal).Content).total_count;
        int skipTimes = resultTotal / 100;
        for (int i = 0; i <= skipTimes; i++)
        {
            RestRequest request = new RestRequest();
            request.Resource = "lists/{list}/members";
            request.AddParameter("list", listName, ParameterType.UrlSegment);
            request.AddParameter("skip",100*i);
            totalMember.AddRange(JsonConvert.DeserializeObject<Member>(client.Execute(request).Content).items);
        }
        //CreateCSVFromGenericList(...);
    }
public class Member
{
    public List<MemberDetail> items { get; set; }
    public int total_count { get; set; }
}
public class MemberDetail
{
    public string address { get; set; }
    public string name { get; set; }
    public bool subscribed { get; set; }
    public object vars { get; set; }
}

在CreateCSVFromGenericList(..)方法中,您可以参考此博客,并将数据导出为任意格式的csv文件。

使用curl,php或任何其他编程语言可以实现这一点,然后只需通过控制面板删除邮件列表:

curl -s --user 'api:YOURAPIKEY' -G 
https://api.mailgun.net/v2/lists/Your@MailingListName.com/members

Apikey和邮件列表名称可从控制面板!

python:

def get_members():
    return requests.get(
        "https://api.mailgun.net/v3/lists/LIST_NAME/members",
        auth=("api", "key-YOUR_KEY"),
        data={'limit': 100, 'skip': 1380})

注意,限制和跳过对于在成员列表中分页非常有用。

最新更新