使用 PHP 检查电子邮件是否订阅了 MailChimp API 3.0 中的列表
Check whether email is subscribed to list in MailChimp API 3.0 using PHP
我刚刚在 MailChimp 网站上阅读了以下内容:
MailChimp API v3.0 is now live!
Prior versions will no longer be supported after 2016, so all API users should begin transitioning to v3.0.
因此,我想移动到 API 的 v3.0。请给我一个函数,在 PHP 中,returns 一个布尔值,它将检查电子邮件地址是否订阅了特定的 MailChimp 列表。我不想订阅那个用户,只是想看看他们是否订阅了。
UPDATE:我回答了另一个问题,提供了更详细的教程,说明如何使用 jQuery .ajax()
:
查看 Mailchimp documentation 并假设您有一个给定的列表,看起来您会使用 GET 调用此端点:
/lists/{list_id}/members/{subscriber_hash}
要在 PHP 中执行此操作,我找到了一个 nice script sitting on 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 wrapper 结合使用。
如果你使用 mailchimp-api 它看起来像那样
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']
的其他可能值在 docs:
中说明
- 已订阅
- 取消订阅
- 已清理
- 待定
- 事务性
我使用 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']));
}
我刚刚在 MailChimp 网站上阅读了以下内容:
MailChimp API v3.0 is now live! Prior versions will no longer be supported after 2016, so all API users should begin transitioning to v3.0.
因此,我想移动到 API 的 v3.0。请给我一个函数,在 PHP 中,returns 一个布尔值,它将检查电子邮件地址是否订阅了特定的 MailChimp 列表。我不想订阅那个用户,只是想看看他们是否订阅了。
UPDATE:我回答了另一个问题,提供了更详细的教程,说明如何使用 jQuery .ajax()
:
查看 Mailchimp documentation 并假设您有一个给定的列表,看起来您会使用 GET 调用此端点:
/lists/{list_id}/members/{subscriber_hash}
要在 PHP 中执行此操作,我找到了一个 nice script sitting on 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 wrapper 结合使用。
如果你使用 mailchimp-api 它看起来像那样
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']
的其他可能值在 docs:
- 已订阅
- 取消订阅
- 已清理
- 待定
- 事务性
我使用 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']));
}