Я отправляю кампанию с использованием mailjet API. Моя функция сделать это в настоящее время выглядит так:
public function sendCampaign($listName, $config, $vars) {
//First we need to set up a draft of the campaign.
$listId = $this->config['lists'][$listName];
$title = $config['subject'] . "_" . time();
$requestBodyOne = [
'Locale' => 'de_DE',
'Sender' => $config['fromName'],
'SenderEmail' => $config['fromEmail'],
'Subject' => $config['subject'],
'ContactsListID' => $listId,
'TemplateID' => $config['template'], //TODO: Figure out how to get templating to work -- right now, this is being ignored!
'Title' => $title,
];
$responseOne = $this->client->post(Resources::$Campaigndraft, ['body' => $requestBodyOne]);
if(!$responseOne->success()) {
$responseOne->getStatus();
}
$data = $responseOne->getData();
$draftId = $data[0]['ID'];
//Now we add our body to the draft
$requestBodyTwo = [
'Html-part' => $vars['body'],
];
$responseTwo = $this->client->post(Resources::$CampaigndraftDetailcontent, ['id' => $draftId, 'body' => $requestBodyTwo]);
if(!$responseTwo->success()) {
$responseTwo->getStatus();
}
//Now we can send the campaign
$responseThree = $this->client->post(Resources::$CampaigndraftSend, [
'id' => $draftId,
'TemplateID' => $config['template'] //TODO: Figure out how to get templating to work -- right now, this is being ignored!
]);
die(dump($responseThree));
}
(Я понимаю, что здесь есть некоторые запахи - я разобью их на более мелкие функции, как только получу большую).
Хотя я устанавливаю TemplateID в двух местах, я не могу заставить mailjet использовать шаблон (который принимает одну переменную "body"). Вместо этого мое сообщение отправляется в виде HTML без шаблона упаковки. Я подтвердил, что мой шаблон существует.
Что я, вероятно, делаю здесь неправильно?
====
Редактировать: изменение запроса так, чтобы он выглядел так:
$requestBodyTwo = [
'Vars' => ['body' => $vars['body']]
];
... приводит к ошибке 400: «Свойства не поддерживаются в полезной нагрузке JSON»