如何使用 API 3.0 从 MailChimp 列表中获取按电子邮件地址过滤的单条记录

How to get single record, filtered by email address, from MailChimp list using API 3.0

将新订阅者从我们的 CRM 导入 MailChimp 很容易,但我现在需要做的是仅根据他们的电子邮件地址获取单个客户记录并获取他们的 MailChimp来自 MailChimp API 的 ID。

MailChimp API 3.0 文档包含有限的使用过滤器进行 GET 调用的示例。我认为可以在不检索整个成员列表的情况下过滤结果,这是脚本现在正在做的,但我只需要一个客户记录,而不是整个列表,否则我会收到整个 JSON列表中每个成员的字符串,将这个庞大的字符串编码成一个数组,然后我需要遍历 JSON 数组以找到具有匹配电子邮件地址的记录,这对我来说似乎效率很低。 我一定遗漏了一些在 MailChimp API 3.0 文档中不容易找到的东西,不是吗?!

我正在使用 PHP 库,但这没关系,我真的只需要知道如何构建 API 调用——正确的 URL(可以我附加了 ?email_address=EMAIL_TO_FILTER 尝试过但没有用)和 JSON 数组结构。我成功连接了 MailChimp API 并构建了一个 mailChimpApiRequest() 方法,如下所示:

function mailChimpApiRequest($method='POST', $url, $postFields = null){

    $ch  = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);

    $headerArr=array(   'Authorization: '  . $this->apikey);

    if($method!='POST' && !empty($method)) {
      //Not needed: $headerArr[] = 'X-HTTP-Method-Override: ' . $method;
    }

    curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, $method );
    curl_setopt($ch, CURLOPT_HTTPHEADER,$headerArr );
    curl_setopt($ch, CURLOPT_POST, true);

    if ($postFields) {
        if ($method!=''){    $postFields['method']=$method;}

        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postFields));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    }

    $curl_response = curl_exec($ch);
    curl_close($ch);

    return $curl_response;
}

有人能帮我弄清楚要传递给上面这个 mailChimpApiRequest() 方法的 $url$postFields 数组吗?

只需在 URL 后附加电子邮件地址的 MD5(全部小写)。太简单了,我在 MailChimp API 文档中错过了它。

你明白了亚伦...希望这可以帮助 运行 遇到同样问题的其他人: http://developer.mailchimp.com/documentation/mailchimp/reference/lists/members/#read-get_lists_list_id_members_subscriber_hash

如果您无法做到这一点 URL,这里是摘要:
使用 HTTP GET 请求 URL /lists/{list_id}/members/{subscriber_hash} subscriber_hash 是列表成员电子邮件地址的小写版本的 MD5 哈希值。