get — Проверьте, подписана ли электронная почта на список в MailChimp API 3.0 с помощью переполнения стека

Я только что прочитал следующее на сайте MailChimp:

MailChimp API v3.0 теперь доступен!
Предыдущие версии больше не будут поддерживаться после 2016 года, поэтому все пользователи API должны начать переход на v3.0.

В результате я хотел бы перейти на v3.0 API. Пожалуйста, не могли бы вы иметь функцию в PHP, которая возвращает логическое значение, которое будет проверять, подписан ли адрес электронной почты на определенный список MailChimp. Я не хочу подписывать этого пользователя, а просто проверяю, подписаны они или нет.

4

Решение

ОБНОВИТЬ: Я ответил на другой вопрос с более сложным руководством о том, как сделать это с помощью jQuery .ajax(): Добавление подписчиков в список с использованием Mailchimp’s API v3

Глядя на Mailchimp документация и, предполагая, что вы имеете в виду данный список, похоже, что вы бы назвали эту конечную точку с помощью GET:
/lists/{list_id}/members/{subscriber_hash}

Чтобы сделать это в PHP, я нашел хороший сценарий, сидящий на github. Их последняя функция, вероятно, поможет вам:

function mc_checklist($email, $debug, $apikey, $listid, $server) {
$userid = md5($email);
$auth = base64_encode( 'user:'. $apikey );
$data = array(
'apikey'        => $apikey,
'email_address' => $email
);
$json_data = json_encode($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://'.$server.'.api.mailchimp.com/3.0/lists/'.$listid.'/members/' . $userid);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json',
'Authorization: Basic '. $auth));
curl_setopt($ch, CURLOPT_USERAGENT, 'PHP-MCAPI/2.0');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
$result = curl_exec($ch);
if ($debug) {
var_dump($result);
}
$json = json_decode($result);
echo $json->{'status'};
}

Если эта функция не работает, единственная обертка, которую я смог найти для библиотеки v3, работает вместе с Laravel — Mailchimp v3 API PHP-оболочка.

8

Другие решения

Если вы используете MailChimp-апи это выглядит так

include 'Mailchimp.php';
use \DrewM\MailChimp\MailChimp;
$MailChimp = new MailChimp('your**api***key');

function emailExistsMc($subscriberMail, $list_id){
global $MailChimp;
$subscriber_hash = $MailChimp->subscriberHash($subscriberMail);
$result = $MailChimp->get("lists/$list_id/members/$subscriber_hash");
if($result['status'] == '404') return false;
return true;
}

Если $result['status'] является 404 тогда ресурс не был найден. Другие возможные значения для $result['status'] указаны в документы:

  • подписной
  • отписался
  • очищенный
  • в ожидании
  • транзакционный
7

Я использую библиотеку DrewM

function isSubscribed($emailAddress, $listId) {
$chimp = new \DrewM\MailChimp\MailChimp($apiKeyHere);

$subscriberHash = $chimp->subscriberHash($emailAddress);

$result = $chimp->get('lists/' . $listId . '/members/' . $subscriberHash);

return ($chimp->success() && isset($result['id']));
}
2
По вопросам рекламы [email protected]