Mailchimp API 已订阅会员的状态 200
Mailchimp API status 200 for members who are already subscribed
以下代码正在运行并成功订阅了新成员。但是,即使电子邮件地址已经订阅,状态 returns 200 也是如此。我已经检查 $member_id 是否正确散列,尽管值相同它仍然 returns 200.
$result = array(
'status' => sync_mailchimp($data)
);
var_dump($result) // 200
function sync_mailchimp($data) {
// Setup our Mailchimp info
$api_key = 'xxxxx';
$list_id = 'ab8abde5bb';
$member_id = md5(strtolower($data['email'])); // lowercase hash of the email
$datacenter = 'us16';
$url = 'https://' . $datacenter . '.api.mailchimp.com/3.0/lists/' . $list_id . '/members/' . $member_id;
$json = json_encode([
'email_address' => $data['email'],
'status' => $data['status']
]);
// Send via curl
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERPWD, 'user:' . $api_key);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
$result = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return $httpcode;
}
我在使用类似代码段时也遇到了同样的问题。
阅读与 managing subscribers 相关的 MailChimp API 3.0 文档(特别是 订阅地址 部分),很明显此方法不是添加新订阅者的正确方法。
请求类型必须是POST
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
并且必须发送到端点
https://<data_center>.api.mailchimp.com/3.0/lists/<list_id>/members/
包含 JSON 的请求正文是相同的。
当电子邮件地址成功添加到列表时,响应代码将为 200
,当电子邮件地址已存在于列表中时,响应代码将为 400
。
请注意,此方法不适用于更新现有订阅者 - 为此,请求类型必须为 PATCH
,并且您必须使用以散列电子邮件结尾的原始端点地址.
以下代码正在运行并成功订阅了新成员。但是,即使电子邮件地址已经订阅,状态 returns 200 也是如此。我已经检查 $member_id 是否正确散列,尽管值相同它仍然 returns 200.
$result = array(
'status' => sync_mailchimp($data)
);
var_dump($result) // 200
function sync_mailchimp($data) {
// Setup our Mailchimp info
$api_key = 'xxxxx';
$list_id = 'ab8abde5bb';
$member_id = md5(strtolower($data['email'])); // lowercase hash of the email
$datacenter = 'us16';
$url = 'https://' . $datacenter . '.api.mailchimp.com/3.0/lists/' . $list_id . '/members/' . $member_id;
$json = json_encode([
'email_address' => $data['email'],
'status' => $data['status']
]);
// Send via curl
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERPWD, 'user:' . $api_key);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
$result = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return $httpcode;
}
我在使用类似代码段时也遇到了同样的问题。
阅读与 managing subscribers 相关的 MailChimp API 3.0 文档(特别是 订阅地址 部分),很明显此方法不是添加新订阅者的正确方法。
请求类型必须是POST
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
并且必须发送到端点
https://<data_center>.api.mailchimp.com/3.0/lists/<list_id>/members/
包含 JSON 的请求正文是相同的。
当电子邮件地址成功添加到列表时,响应代码将为 200
,当电子邮件地址已存在于列表中时,响应代码将为 400
。
请注意,此方法不适用于更新现有订阅者 - 为此,请求类型必须为 PATCH
,并且您必须使用以散列电子邮件结尾的原始端点地址.