如何解决MailChimp 集成错误代码 501 - 不支持的请求 - PHP
下面是我向mailchimp添加联系人的代码。我正在从 laravel 的 env 文件中获取 mailchimp api 密钥和列表 ID。另外 $data 涉及所有输入。
$apiKey = env('MAILCHIMP_APIKEY');
$listId = env('MAILCHIMP_LIST_ID');
$auth = base64_encode( 'user:'.$apiKey);
$mailChimpdata = array(
'apikey' => $apiKey,'email_address' => $data['email'],'status' => $data['status'],'merge_fields' => array(
'FNAME' => $data['firstname'],'LNAME' => $data['lastname']
)
);
$json_data = json_encode($mailChimpdata);
$ch = curl_init();
$memberId = md5(strtolower($data['email']));
$url = 'https://us19.admin.mailchimp.com/3.0/lists/' . $listId . '/members/' . $memberId;
curl_setopt($ch,CURLOPT_URL,$url);
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_VERBOSE,CURLOPT_HEADER,CURLOPT_TIMEOUT,10);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_0);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_CUSTOMREQUEST,'PUT');
curl_setopt($ch,CURLOPT_POSTFIELDS,$json_data);
$result = curl_exec($ch);
但我收到以下错误
HTTP/1.0 501 Not Implemented
Server: AkamaiGHost
Mime-Version: 1.0
Content-Type: text/html
Content-Length: 334
Expires: Wed,07 Apr 2021 08:49:45 GMT
Date: Wed,07 Apr 2021 08:49:45 GMT
Connection: close
Set-Cookie: _abck=471ED28A26F6757CE57AC9E4318E7BD6~-1~YAAQHdcLF/keKqt4AQAASPOFqwWS/EeAKXso+2igviRTfIMw3pqbDMndhfZPfoX+eQn3Iv8iqfbogtNFmkU4lRDRQLdAWAYBhq2oOhDTiK ▶
Set-Cookie: bm_sz=5CBD698E96AC9E2B62898990FF45E196~YAAQHdcLF/oeKqt4AQAASPOFqwsLVm8fKmxtToeWU99vCUWske+XMuRtEjiCpzXhPE5xe8jGoh6EfYe8WG6zjMaaI2jPZos0gb2ER9jykveOE ▶
<HTML><HEAD>
<TITLE>Unsupported Request</TITLE>
</HEAD><BODY>
<H1>Unsupported Request</H1>
PUT to http://us19.admin.mailchimp.com/3.0/lists/applevendor/members/b642b4217b34b1e8d3bd915fc65c4452 not supported.<P>
Reference #8.1dd70b17.1617785385.68d39e
</BODY></HTML>
请帮我解决这个问题。
解决方法
基于 Mailchimp documentation,他们使用 URL 添加联系人
"https://us20.api.mailchimp.com/3.0/lists/$list_id/members/"
但是你有
"https://us19.admin.mailchimp.com/3.0/lists/$listId/members/$memberId"
带有$memberId
。我猜 id
是他们的内部标识符。
我不知道这个话题是否仍然相关,但这是我使用 php / Guzzle 的方法:
$client = new Client();
$client->request('PUT','https://us9.api.mailchimp.com/3.0/lists/{list_id}/members/{subscriber_hash},[
'json' => [
'email_address' => $email,'status_if_new' => "unsubscribed",],'headers' => [
"Authorization" => "Basic YOUR_API_KEY"
]
]);
subscriber_hash => 哈希 MD5
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。