簡體   English   中英

如何使用他們的 api 3.0 創建/更新大量電子郵件到 Mailchimp 列表?

[英]How to create/update bulk of emails to Mailchimp list using their api 3.0?

我有一個已經在 MailChimp 中創建的列表,它在訂閱和取消訂閱列表中有一些地址。

現在,我需要在 PHP 代碼中使用 api 創建/更新訂閱者列表。

$apiKey = "XXXXXXXXXXXXXXXXXXXXXXXXX-us12";

$subscribers = array(array(
    'email_address'     => 'subscriber1@gmail.com',
    'status'    => 'subscribed',
    'merge_fields'  => array(
            'FNAME'     => "subscriber1F",
            'LNAME'     => "Arunachalam1L"
        )
),
array(
    'email_address'     => 'subscriber2@gmail.com',
    'status'    => 'subscribed',
    'merge_fields'  => array(
            'FNAME'     => "subscriber2F",
            'LNAME'     => "subscriber2L"
        )
));

$listId = "b633deb4c8";

$url = "https://us12.api.mailchimp.com/3.0/batches";
$id = 1;
    foreach ($subscribers as $subscriber) {
        #echo $subscriber['email_address'];
        $operation = array(
            'method'=>'PUT',
            'path'=>'/lists/'.$listId.'/members/'.md5(strtolower($subscriber['email_address'])),
            'body'=>json_encode($subscriber));
        $id++;
        array_push($batch_operations, $operation);
    }

    $request_encoded = json_encode(array('operations'=>$batch_operations));

    $curl = curl_init($url);

    curl_setopt($curl, CURLOPT_USERPWD, 'user:' . $apiKey);    
    curl_setopt($curl, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);//raw output
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt($curl, CURLOPT_POSTFIELDS, $request_encoded); 
$result = curl_exec($curl);

我得到響應 200。然后我什至嘗試通過獲取批處理操作提交后返回的 BatchId 的響應。

它返回操作完成,所有都成功但列表尚未更新。 有沒有人成功使用過他們的batches api?

編輯 1:我收到此操作的響應,該操作具有新的電子郵件地址。

{"status_code":404,"operation_id":null,"response":"{\"type\":\"http:\/\/developer.mailchimp.com\/documentation\/mailchimp\/guides\/error-glossary\/\",\"title\":\"Resource Not Found\",\"status\":404,\"detail\":\"The requested resource could not be found.\",\"instance\":\"\"}"}

編輯 2

解釋 抱歉,我不完全明白您的意思。 但是我正在做的是首先發送批處理請求,(例如:- 它有 2 個操作,如帖子中所示)。然后我在我提出的請求的響應中得到一個 BatchId。 然后我用 BatchId 發出了一個 Get 請求,為此我得到了一個包含錯誤操作信息的響應。我得到了一個鏈接來獲取批處理操作的響應以及我發送的所有地址的結果。 它只有所有操作,但如果地址已經存在,則該操作成功(從某種意義上說,只是將其添加到成功操作計數中),但不會反映我所做的更改,如果地址不存在,則添加在失敗的操作中。

我解決了這個問題。 這是因為 url 路徑。雖然 Mailchimp 文檔說如下(即使我正在嘗試批處理操作) 文檔

在此處輸入圖片說明

我在操作中改變了路徑,應該是這樣的。

'path'=>'lists/'.$listId.'/members/'.md5(strtolower($subscriber['email_address'])),

現在它按預期工作。 已嘗試在操作中使用 'PUT' 方法,它會在 mailchimp 中創建/更新列表的訂閱者。

請刪除以下代碼並將類型更改為POST,問題已解決。

array_push($batch_operations, $operation);

暫無
暫無

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

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