2017-12-12 15 views
0

SendGridのトランザクションテンプレートをテストしようとしています。私は値がハードコードされているときにメールを送ることができましたが、私は変数を提供しませんでした。ループされた値はSendGridの置換では機能しませんが、ハードコードされたものは同じです

私のヘッダ:見てみましょう

$headers = array(
      'Content-Type: application/json', 
      'Authorization: Bearer my_actual_api_key', 
      ); 

私の$ data配列:

if($data){ 
     foreach($data as $k=>$v){ 
      $subs.= '"{{'.$k.'}}":"'.$v.'"'; 

      if($last_element != $v){ 
       $subs .=","; 
      } 
     } 
    } 

を出力する:

$resetLink = 'na'; 
$reset = 'Please, click here to activate your account'; 
$user = 'MyName'; 
$data = ['reset'=>$reset, 'user'=>$user, 'resetLink'=>$resetLink]; 

$潜水艦を行うことによって作成されます

"{{reset}}": "Please, click here to activate your account.", 
"{{user}}": "MyName", 
"{{resetLink}}": "na" 

ちょうど私がしたい!私がしなければ

しかし、私がしなければ、

{"errors":[{"message":"Bad Request","field":null,"help":null}]} 

:しかし

$json = '{ 
      "personalizations": [{ 
       "to": [{ 
        "email": "'.$to.'", 
        "name": "Example 01" 
       }], 
       "subject": "'.$subject.'", 
       "substitutions": { 
        '.$subs.' 
       } 
      }], 
      "from": { 
       "email": "'.$from.'", 
       "name": "'.$from.'" 
      }, 
      "reply_to": { 
       "email": "'.$from.'", 
       "name": "'.$from.'" 
      }, 

      "template_id": "My_actual_temnplate_id" 


     }'; 

私は戻って取得

$json = '{ 
      "personalizations": [{ 
       "to": [{ 
        "email": "'.$to.'", 
        "name": "Example 01" 
       }], 
       "subject": "'.$subject.'", 
       "substitutions": { 
        "{{reset}}": "Please, click here to activate your account.", 
        "{{user}}": "MyName", 
        "{{resetLink}}": "na" 
       } 
      }], 
      "from": { 
       "email": "'.$from.'", 
       "name": "'.$from.'" 
      }, 
      "reply_to": { 
       "email": "'.$from.'", 
       "name": "'.$from.'" 
      }, 

      "template_id": "1959ba19-3bc7-455b-a577-7a340f4c5fd9" 
     }'; 

私はカールとちょうど私のメールを送ることができます次のコードを使用してエラーは発生しません。

は相続人カール標準のもの:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://api.sendgrid.com/v3/mail/send"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $json); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

$response = curl_exec($ch); 
curl_close($ch); 

Iはまた、いずれか)(配列としてJSONを作製し、次いでjson_encodeを用いて上記と同様のエラーの非メッセージが運を試していません。これは、sendgridサイトのどこかで提供されたjsonであり、ちょうどfyiです。

ご覧のとおり、私は見つかった答えのほとんどを占める文字列としてすべてを持っています。誰かがなぜこれが起こっているのかについていくつかの光を当てることができますか?前もって感謝します!

答えて

0

今朝起きたコードは機能していましたが、ループを作成しても問題はありませんでした。フレームワーク(Yii2)はキャッシュしていました。数時間後に1リフレッシュするだけですべてが必要でした。

関連する問題