Mailjet: добавление электронной почты в список не работает

Я начал использовать Mailjet для хранения писем с подпиской, используя форму. Библиотека, которую я использовал для этой задачи:https://github.com/mailjet/mailjet-apiv3-php-simple«

include("php-mailjet-v3-simple.class.php");
$apiKey = "xxx";
$secretKey = "yyy";
$mj = new Mailjet($apiKey, $secretKey);
$contact_params = array("method" => "POST", "Email" => "[email protected]");
$contact = $mj->contact($contact_params);

$add_params = array(
"method" => "POST",
"ListID" => "11223344",
"IsActive" => "True");
$result = $mj->listrecipient($add_params);

Но этот метод не добавляет электронное письмо в список Mailjet. Что я тут не так сделал? Пожалуйста, помогите мне.

2

Решение

Редактировать:

Смотрите правки на этот ответ для исправления, если вы используете версию PHP старше 5.4.

Если возможно, попробуйте обновить вместо 🙂


Прежде всего, спасибо за ваш интерес к Mailjet!

Теперь, прежде чем дать вам ответ, пожалуйста, знайте, что есть руководство по тому, что вы спрашиваете Вот 🙂
Кроме того, README для Github репо для этой библиотеки имеет пример раздела по контактам и спискам контактов.

Теперь, когда вы знаете, где искать в следующий раз, когда у вас возникнут проблемы с этой библиотекой, давайте перейдем к исправлению, не так ли? 😉

Исправление

Ваш add_Params массив просто нужен ContactID поле.
Вот как это должно выглядеть:

$add_params = [
"method"    =>  "POST",
"ListID"    =>  [TheListID],
"ContactID" =>  [TheContactID],
"IsActive"  =>  True
];

Это должно решить вашу проблему.

Читайте дальше, если вы хотите знать, почему.
Кроме того, полный процесс создания контакта и добавления его в новый список описан в конце.

«Почему»

listrecipient ресурс это способ связать contact ресурс для contactslist ресурс.
Это означает, что API не знает, что делать при создании listrecipient ресурс без всех необходимых параметров (подробнее об этом Вот).

Весь процесс

Давайте создадим contact и contactslist ресурсы и добавить первое ко второму.
(Я предполагаю, что у вас есть $mj экземпляр Mailjet учебный класс.)


Убедитесь, что контакт, который вы пытаетесь создать, еще не создан.
Увидеть Вот для получения дополнительной информации.


$makeContactParams = [
"method"    =>  "POST",
"Email"     =>  "[email protected]"];

$contact = $mj->contact($makeContactParams);

echo "Contact ID: ".$contact->Data[0]->ID."\n";

$contactslistParams = [
"method"    =>  "POST",
"Name"      =>  "TestSO"];

$list = $mj->contactslist($contactslistParams);

echo "List ID: ".$list->Data[0]->ID."\n\n";

$listRecepParams = [
"method"    =>  "POST",
"ListID"    =>  $list->Data[0]->ID,
"ContactID" =>  $contact->Data[0]->ID,
"IsActive"  =>  True
];

$recep = $mj->listrecipient($listRecepParams);

Я надеюсь, что это помогло вам решить вашу проблему и понять, почему это было в первую очередь 🙂

3

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

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

По вопросам рекламы [email protected]