使用Mailchimp的API v3将订户添加到列表中

我试图将用户添加到我在Mailchimp中创建的列表中,但是在任何地方都找不到任何代码示例。我曾尝试弄清​​楚如何使用API​​,但我非常像个“看例子学习”的人。

我尝试使用API​​的第2版,但尽管通过网络上的示例进行了工作,但似乎没有任何效果,Mailchimp在其网站上说了有关其API早期版本的以下内容:

不推荐使用2.0版和更早版本。这些版本仅提供最小的支持(错误修复,安全补丁)。

:基于TooMuchPete的答案,我对“管理订户”上的链接进行了进一步的研究,并更改了我在此处找到的一些代码,但是由于函数http_build_query()不能处理嵌套数组,因此无法正常工作。我不确定如何处理添加订户的“

merge_fields”部分。我当前的代码如下:

$postdata = http_build_query(

array(

'apikey' => $apikey,

'email_address' => $email,

'status' => 'subscribed',

'merge_fields' => array(

'FNAME' => $name

)

)

);

$opts = array('http' =>

array(

'method' => 'POST',

'header' => 'Content-type: application/x-www-form-urlencoded',

'content' => $postdata

)

);

$context = stream_context_create($opts);

$result = file_get_contents('https://us2.api.mailchimp.com/3.0/lists/<list_id>/members/', false, $context);

var_dump($result);

die('Mailchimp executed');

:我现在诉诸于使用curl,并且我设法使某些东西几乎可以正常工作。数据发送到Mailchimp,但是我收到错误消息

我猜我需要按照此处所述进行身份验证。我尝试将其添加到无法正常工作的http标头中。请参阅下面的代码:

$apikey = '<api_key>';

$auth = base64_encode( 'user:'.$apikey );

$data = array(

'apikey' => $apikey,

'email_address' => $email,

'status' => 'subscribed',

'merge_fields' => array(

'FNAME' => $name

)

);

$json_data = json_encode($data);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://us2.api.mailchimp.com/3.0/lists/<list_id>/members/');

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json/r/n

Authorization: Basic '.$auth));

curl_setopt($ch, CURLOPT_USERAGENT, 'PHP-MCAPI/2.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_data);

$result = curl_exec($ch);

var_dump($result);

die('Mailchimp executed');

回答:

根据“ 列表成员实例”文档,最简单的方法是使用一个 请求,该请求根据文档

“添加新的列表成员,或者如果列表中已经存在电子邮件,则更新该成员”

此外apikey,绝对不是json模式的一部分,将它包含在json请求中没有意义。

另外,如@TooMuchPete的注释中所述,您可以使用CURLOPT_USERPWD基本的HTTP身份验证,如下所示。

我正在使用以下功能来添加和更新列表成员。您可能需要merge_fields根据列表参数包括一些稍有不同的设置。

$data = [

'email' => 'johndoe@example.com',

'status' => 'subscribed',

'firstname' => 'john',

'lastname' => 'doe'

];

syncMailchimp($data);

function syncMailchimp($data) {

$apiKey = 'your api key';

$listId = 'your list id';

$memberId = md5(strtolower($data['email']));

$dataCenter = substr($apiKey,strpos($apiKey,'-')+1);

$url = 'https://' . $dataCenter . '.api.mailchimp.com/3.0/lists/' . $listId . '/members/' . $memberId;

$json = json_encode([

'email_address' => $data['email'],

'status' => $data['status'], // "subscribed","unsubscribed","cleaned","pending"

'merge_fields' => [

'FNAME' => $data['firstname'],

'LNAME' => $data['lastname']

]

]);

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_USERPWD, 'user:' . $apiKey);

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;

}

以上是 使用Mailchimp的API v3将订户添加到列表中 的全部内容, 来源链接: utcz.com/qa/406727.html

回到顶部