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);
Я надеюсь, что это помогло вам решить вашу проблему и понять, почему это было в первую очередь:-)