[英]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.