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

編集:

5.4 より古いバージョンの PHP を使用している場合の修正については、この回答の編集を参照してください。

可能であれば、代わりにアップグレードしてみてください:-)


まず、Mailjet に関心をお寄せいただきありがとうございます。

さて、あなたに答えを与える前に、あなたがここで何を求めているかについてのガイドがあることを知っておいてください:-) . また、そのライブラリの Github リポジトリ
の README には、連絡先と連絡先リストに関するセクションの例があります。

次にこのライブラリに問題が発生した場合に最初にどこを確認すればよいかがわかったので、修正に取り掛かりましょうか。;-)

修正

配列にはフィールドadd_Paramsが必要です。 これは次のようになります。ContactID

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

これで問題が解決するはずです。

理由を知りたい方は読み進めてください。
また、最後に説明されている連絡先を作成して新しいリストに追加する完全なプロセス。

「なぜ」

リソースは、リソースをリソースlistrecipientにリンクする方法です。 これは、必要なすべてのパラメーターなしでリソースを作成するときに、API が何をすべきかを認識していないことを意味します (詳細については、こちら)。contactcontactslist
listrecipient

全体のプロセス

contactaと acontactslistリソースを作成し、前者を後者に追加しましょう。(クラスのインスタンスが
あると仮定します。)$mjMailjet


編集

作成しようとしている連絡先がまだ作成されていないことを確認してください。
詳細については、こちらを参照してください。


$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 に答える