Mailjet:向列表添加电子邮件不起作用

时间:2015-05-19 10:23:02

标签: php email subscribe 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 个答案:

答案 0 :(得分:3)

编辑:

如果您使用的是早于5.4的PHP版本,请参阅this answer上的编辑内容。

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

首先,感谢您对Mailjet的兴趣!

现在,在给出答案之前,请知道您提出的问题指南here :-)。
此外,Github repo for that library的自述文件有example section on contacts and contactslists

现在你知道下次遇到这个库的问题时首先要看哪里,让我们来修复,好吗? ; - )

修复

您的add_Params数组只需要一个ContactID字段 这是它应该是什么样子:

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

这可以解决您的问题。

如果您想了解原因,请继续阅读 此外,创建联系人并将其添加到最后描述的新列表的完整过程。

"为什么"

listrecipient资源是一种将contact资源与contactslist资源相关联的方式。
这意味着当您创建listrecipient资源而没有所有必要参数时,API不知道该怎么做(关于here的更多信息)。

整个过程

让我们创建contactcontactslist资源,并将前者添加到后者。
(我假设你有$mj类的Mailjet个实例。)

修改

确保您已创建的联系人尚未创建。
有关更多信息,请参阅here

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

我希望这有助于您解决问题并理解为什么它首先出现在那里: - )