我想把地址从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})
注意,限制和跳过对于在成员列表中分页非常有用。