Tec*_*Tee 6 php email subscribe mailjet
我使用Mailjet api将提交的电子邮件存储在Mailjet列表中.当有了Mailjet 0.1版本的API(然后没有任何PHP包装但很容易使用他们的示例)时,这种方法正常工作,但是当他们将API更改为版本3时,他们的PHP包装器在添加时不会返回任何联系人ID联系人列表的新联系人.我之前提出了一个类似的问题,如何让Mailjet工作,但现在这个问题出现在新版本3中.
这里再次是更正的代码,
*假设显示的电子邮件是尚未在Mailjet中创建的新联系人.
$mj = new Mailjet();
$contact_params = array("method" => "POST", "Email" => "abc@gmail.com");
$contact = $mj->contact($contact_params);
$add_params = array(
"method" => "POST",
"ContactID" => $contact,
"ListID" => _MAILJET_LIST,
"IsActive" => "True"
);
$mj->listrecipient($add_params);
Run Code Online (Sandbox Code Playgroud)
开发人员@Gormador说要$contact->Data[0]->ID用作联系人ID,但它仍然返回NULL.
尝试将创建的联系人添加到列表时(调试模式设置为2),我收到此错误.
array(3) { ["ContactID"]=> NULL ["ListID"]=> string(1) "2"
["IsActive"]=> string(4) "True" } string(105) "{ "ErrorInfo" : "",
"ErrorMessage" : "Invalid data: \"null\" is an invalid integer",
"StatusCode" : 400 }"
Run Code Online (Sandbox Code Playgroud)
上一个问题:Mailjet:向列表添加电子邮件不起作用
更新:包含更正的完整代码,
$mj = new Mailjet();
$add_email = "testing" . rand(0, 1000) . "@gmail.com";
$contact_params = array("method" => "POST", "Email" => $add_email);
$mj->contact($contact_params);
$viewContact = array("method" => "VIEW","unique" => $add_email);
$contact = $mj->contact($viewContact);
$add_params = array( "method" => "POST", "ContactID" => $contact->Data[0]->ID, "ListID" => 1, "IsActive" => "True" );
$mj->listrecipient($add_params);
Run Code Online (Sandbox Code Playgroud)
此问题不一定特定于您试图实现的目标。
尽管如此,我们的 1.0.6 包装器中肯定存在一个错误。在包装器代码中,我们使用函数的第四个参数,该参数仅在 PHP 5.4 中引入(请参阅此处的json_decode()“Changelog”部分)。
有两种方法可以解决这个问题:
希望这有帮助。我们当然很感激这引起了我们对这个特定问题的关注:)
为了澄清这一点,以下是第二种方法在代码方面的含义:
$this->_response = json_decode($buffer, false, 512, JSON_BIGINT_AS_STRING);
//Becomes
$this->_response = json_decode($buffer, false, 512);
Run Code Online (Sandbox Code Playgroud)
这应该消除警告并解决问题。那不是很棒吗?;-)
由于我确实无法重现您的问题,这里有一个问题:
当您发出以下代码时,您尝试创建的联系人是否列在响应中?
或者,请转到此处获取您帐户的联系人列表。
$mj = new Mailjet($apiKey, $secretKey);
$contact = $mj->contact();
var_dump($contact);
Run Code Online (Sandbox Code Playgroud)
如果是,这就是为什么我在回答你的其他问题时所写的内容不起作用。
嗯,您正在尝试创建一个已在您的帐户中列出的联系人。创建联系人的过程并不一定意味着必须将其分配到联系人列表。
在将现有联系人添加到列表之前,先获取现有联系人的 ID,而不是创建它:
$mj = new Mailjet($apiKey, $secretKey);
$viewContact = [
"method" => "VIEW",
"unique" => "gaetan.philippot@gmail.com"
];
$contact = $mj->contact($viewContact);
echo "Contact ID: ".$contact->Data[0]->ID."\n";
// Then proceed as described in my original answer.
Run Code Online (Sandbox Code Playgroud)
或者通过网络界面将其删除,然后再次尝试按照我的回答操作。
(单击联系人的电子邮件,然后单击其头像旁边的黄色菜单,然后单击“删除”。)
这能解决你的问题吗?:-)