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" => "abc@gmail.com");
$contact = $mj->contact($contact_params);

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

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

1 ответ

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

Смотрите исправления в этом ответе, если вы используете версию 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"     =>  "testSO@example.org"
];

$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);

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

Другие вопросы по тегам