зацикленные значения не работают для подстановок Sendgrid, но те же жестко закодированные

Я пытаюсь проверить транзакционные шаблоны Sendgrid для работы. Я мог отправлять почту, когда значения были жестко закодированы, но не тогда, когда я предоставляю им переменную. Давайте взглянем:

мои заголовки:

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

мой массив $ data:

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

$ subs создается путем:

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

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

какие выводы:

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

Как раз то, что я хочу!

однако, если я сделаю:

$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"

}';

Я вернусь:

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

НО, если я сделаю:

$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"}';

Я могу выбрать и отправить мою почту просто отлично, без ошибок, используя следующее.

Вот CURL, стандартные вещи:

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

Я также попытался создать этот json в виде массива, а затем использовать json_encode (), тоже не повезло, сообщение об ошибке та же, что и выше. Это JSON, который был предоставлен где-то на сайте Sendgrid, просто к вашему сведению.

Как вы можете видеть, у меня есть все в виде строки, которая составляет большинство ответов, которые я нашел. Может кто-то пролить свет на то, почему это происходит? Заранее спасибо!

0

Решение

Пришел сегодня утром, и код работал, больше не было никаких проблем с этим циклом, генерирующим замены. Каркас (Yii2) был кеширующим. 1 обновление через несколько часов — все, что нужно.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]