Intereting Posts
PHP Преобразование целого в Date, обратное strtotime Как проверить / определить возраст сессии с помощью PHP PHP Zend Framework – Zend_Config и глобальное состояние Как запустить PHP-код в Java-приложении? Как читать URL-адрес юникода с PHP? Получение долговременного токена доступа с помощью setExtendedAccessToken () возвращает краткосрочный токен Как управлять поиском писем и ошибками в PHP? приглашать друзей в диалог в приложении Facebook HEREDOC вмешивается в отступы кода Учетная запись службы Google Диска и «Неавторизованный клиент или область в запросе» Будет ли файл flock'ed разблокирован, когда процесс неожиданно завершится? как я могу вернуть массив из php в javascript, используя ajax Yii – как получить данные модели на страницу макета? mySql – создание соединения с использованием списка значений, разделенных запятыми php5.3.3 date.timezone снова директива php.ini не принимается во внимание

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. Что я сделал здесь неправильно? Пожалуйста, помогите мне.

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

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

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


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

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

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

Исправление

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

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

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

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

«Почему»

listrecipient – это способ связать ресурс contactslist ресурсом listrecipient 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); 

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