我正在使用sendinBlue API在PHP和cURL中编写脚本。 此脚本必须将联系人从CSV文件发送到网站sendinBlue中的我的日期数据库。
此API有一个文档:https://developers.sendinblue.com/reference#importcontacts-1
例如,我想导入以下2个联系人:
dupont.jean@aol.com;Dupont;Jean;0645342891;2;2019-12-01 19:00:21;false;true;false
dupont2.jean@aol.com;Dupontt;maurice;0645342892;3;2019-12-01 19:00:21;false;true;false
所以我有这个代码:
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.sendinblue.com/v3/contacts/import",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\"fileBody\":\"dupont.jean@aol.com;Dupont;Jean;0645342891;2;2019-12-01 19:00:21;false;true;false;
dupont2.jean@aol.com;Dupontt;maurice;0645342892;3;2019-12-01 19:00:21;false;true;false\",
\"listIds\":[2],\"emailBlacklist\":false,\"smsBlacklist\":false,
\"updateExistingContacts\":true,\"emptyContactsAttributes\":true}",
CURLOPT_HTTPHEADER => array(
"accept: application/json",
"api-key: ****",
"content-type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
但是这不起作用,我遇到了这个错误:{"error":{"status":400,"message":"Input must be a valid JSON object","code":"bad_request"}}
我尝试仅导入一个联系人,仅导入具有以下代码的电子邮件:
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.sendinblue.com/v3/contacts/import",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\"fileBody\":\"dupont.jean@aol.com",
\"listIds\":[2],\"emailBlacklist\":false,\"smsBlacklist\":false,
\"updateExistingContacts\":true,\"emptyContactsAttributes\":true}",
CURLOPT_HTTPHEADER => array(
"accept: application/json",
"api-key: ****",
"content-type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
但是那不是全部,因为所有内容都是空的,我想同时发送多个联系人! (将近1万个联系人!)。
你能帮我吗?
答案 0 :(得分:0)
参数fileBody
应该类似于.csv或.txt,请参见示例here。
我在Guzzle上的代码如下:
$fileBody = "EMAIL;FIRSTNAME;LASTNAME" . " \n" .
"junie3@example.com;Junie;JL" . " \n" .
"john@example.com;John;JohnL";
$client = new Client([
'headers' => [
'api-key' => $apiKey
]
]);
$client->post($apiUrl . '/contacts/import', [
\GuzzleHttp\RequestOptions::JSON => [
'fileBody' => $fileBody,
'listIds' => [$listId],
'updateExistingContacts' => true,
]
]);