Извлечь адреса почтовых рассылок из MailGun

Я хочу извлечь адреса из MailGun в CSV и полностью удалить MailGun. База данных MailGun является единственной копией 951 адреса, к которым у меня нет абсолютно никакого доступа к базе данных в любой форме, кроме просмотра списка в MailGun.

http://documentation.mailgun.com/api-mailinglists.html

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 полезны для разбивки на страницы в вашем списке участников.

Другие вопросы по тегам