2

我已经开始使用 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 列表中。我在这里做错了什么?请帮我。

4

1 回答 1

3

编辑:

如果您使用的 PHP 版本早于 5.4,请参阅此答案的编辑以获取修复。

如果可能,请尝试升级:-)


首先感谢您对Mailjet的关注!

现在,在给你答案之前,请知道这里有一个关于你所问内容的指南:-)。此外,该库的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);

我希望这能帮助你解决你的问题并理解为什么它首先存在:-)

于 2015-05-19T13:07:15.637 回答