2016-12-05 4 views
2

ドキュメントに応じて、/ lists/{list_id}へのPOSTは、リストメンバーを一括購読または購読解除する必要があります。Mailchimp API 3.0バッチ購読

2人のメンバーを送信すると、一つの新たなメンバーと一つ解除部材:

Response body parameters

Errors: An array of objects, each representing an email address that could not be added to the list or updated and an error message providing more details.

{ 
     "update_existing":true, 
     "members":[ 
      { 
       "email_address":"[email protected]", 
       "email_type":"html", 
       "status":"subscribed" 
      }, 
      { 
       "email_address":"[email protected]", 
       "email_type":"html", 
       "status":"subscribed" 
      } 
     ] 
    } 

ドキュメント(http://developer.mailchimp.com/documentation/mailchimp/reference/lists/#create-post_lists_list_id)は、得られたJSONはnew_members、updated_membersの配列とエラーのあるメンバーとの配列を含むであろうと述べています。

は、しかし、その代わりに、私は次のエラーでHTTPステータス400を取得:Batch subscribeについては

{ 
    "type":"http://developer.mailchimp.com/documentation/mailchimp/guides/error- glossary/", 
    "title":"Member Exists", 
    "status":400, 
    "detail":"[email protected] is in a compliance state due to unsubscribe, bounce, or compliance review and cannot be subscribed.", 
    "instance":"" 
} 
+2

私はタイトルを除いて同じ反応をして得た:「コンプライアンスの状態のメンバー」 – nmit026

答えて

0

がcode.This下記これはテストされ、100%動作するコードされてみてください。

<?php 
$apikey = ''; // Your Mailchimp ApiKey 
$list_id = ''; // your List ID Where you want to add subscriber 

$servername = 'localhost'; 
$username = 'root'; 
$password = ''; 
$dbname  = 'dada_mail_to_mailchimp'; 
// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die('Connection failed: ' . $conn->connect_error); 
} 

$sql  = 'SELECT * FROM emails Limit 2'; 
$result = $conn->query($sql); 
$finalData = []; 
if ($result->num_rows > 0) { 
    // output data of each row 
    while ($row = $result->fetch_assoc()) { 
     $individulData = array(
      'apikey'  => $apikey, 
      'email_address' => $row['email'], 
      'status'  => $row['status'],//subscribe,pending,unsubscribe 
      'merge_fields' => array(
       'FNAME' => $row['FNAME'], 
       'LNAME' => $row['LNAME'], 
      ) 
     ); 

     $json_individulData  = json_encode($individulData); 
     $finalData['operations'][] = 
      array(
       "method" => "POST", 
       "path" => "/lists/$list_id/members/", 
       "body" => $json_individulData 
      ); 
    } 
} 

$api_response = batchSubscribe($finalData, $apikey); 
print_r($api_response); 
$conn->close(); 

/** 
* Mailchimp API- List Batch Subscribe added function 
* 
* @param array $data Passed you data as an array format. 
* @param string $apikey your mailchimp api key. 
* 
* @return mixed 
*/ 
function batchSubscribe(array $data, $apikey) 
{ 
    $auth   = base64_encode('user:' . $apikey); 
    $json_postData = json_encode($data); 
    $ch   = curl_init(); 
    $dataCenter = substr($apikey, strpos($apikey, '-') + 1); 
    $curlopt_url = 'https://' . $dataCenter . '.api.mailchimp.com/3.0/batches/'; 
    curl_setopt($ch, CURLOPT_URL, $curlopt_url); 

    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 
     'Authorization: Basic ' . $auth)); 
    curl_setopt($ch, CURLOPT_USERAGENT, 'PHP-MCAPI/3.0'); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json_postData); 

    $result = curl_exec($ch); 
    return $result; 
} 
+0

https://stackoverflow.com/a/42258497/6707985あなたが重複して下さいフラグにはほとんど直接の質問に、あなたのコードをコピーすることができた場合ダブル投稿の代わりに:) – geisterfurz007

関連する問題