簡體   English   中英

使用PHP檢查MailChimp API 3.0中是否訂閱了電子郵件列表

[英]Check whether email is subscribed to list in MailChimp API 3.0 using PHP

我剛剛在MailChimp網站上閱讀了以下內容:

MailChimp API v3.0現已上線! 2016年之后將不再支持早期版本,因此所有API用戶都應該開始過渡到v3.0。

因此,我想轉到API的v3.0。 我可以在PHP中使用返回布爾值的函數,該函數將檢查電子郵件地址是否訂閱了特定的MailChimp列表。 我不想訂閱該用戶,只是檢查他們是否訂閱。

更新 :我回答了另一個問題,更詳細的教程如何使用jQuery .ajax()使用Mailchimp的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包裝器一起使用。

如果您使用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']其他可能值在文檔中說明:

  • 認購
  • 退訂
  • 清洗
  • 有待
  • 交易

我使用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']));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM