SendGrid API возвращает & quot; {Список} не существует & quot;

Я пытаюсь добавить адрес электронной почты в список SendGrid, который является единственным списком, который существует в моей учетной записи. Я могу успешно получить список и отправить электронное письмо, но не могу добавить электронные письма в список контактов.

Это мой подход (следуя примеру на Справочник по API электронной почты и аутентификация после Справочник по API аутентификации):

<?php
$API_KEY = getenv('SENDGRID_API_KEY'); // Environment variable sourced correctly

$request_url =  "https://api.sendgrid.com/api/newsletter/lists/email/add.json";
$headers = array(
"Authorization: Bearer $API_KEY",
"ContentType: application/json");
$data = array(
"email" => "email@example.com",
"name" => 'Stackoverflow'
);
$params = array(
'api_user'  => $sendgrid_user,
'api_key'   => $sendgrid_pass,
'list'      => "TestList",
'data'      => json_encode($data)
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_URL, $request_url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$resp = curl_exec($ch);
curl_close($ch);

print_r($resp);

Вывод приведенного ниже кода:

{
"error": "TestList does not exist"}

я знаю TestList существует, потому что я тоже пытался Список всех списков [GET] и это показывает мне это:

{
"lists": [
{
"id": XXXXXX,
"name": "TestList",
"recipient_count": 1
}
]
}

Что я делаю неправильно? Что мне не хватает?

2

Решение

Вы смешиваете две разные версии API. Вы проходите аутентификацию и ПОЛУЧАЕТЕ свои списки через v3, но пытаетесь добавить в v2.

В версии 3 получатели имеют отношение один-ко-многим со списками, поэтому вам нужно создать получателя, а потом добавить его в свой список

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector