Извлечь адреса почтовых рассылок из MailGun
Я хочу извлечь адреса из MailGun в CSV и полностью удалить MailGun. База данных MailGun является единственной копией 951 адреса, к которым у меня нет абсолютно никакого доступа к базе данных в любой форме, кроме просмотра списка в MailGun.
3 ответа
Используя curl,php или любой другой язык программирования, вы можете добиться этого, а затем просто удалить список рассылки через панель управления:
curl -s --user 'api:YOURAPIKEY' -G \
https://api.mailgun.net/v2/lists/Your@MailingListName.com/members
Apikey и список рассылки доступны с панели управления!
Это мое решение этой проблемы в 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 в любом формате.
В питоне:
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})
Обратите внимание, что limit и skip полезны для разбивки на страницы в вашем списке участников.