Теги слияния в mandrill не работают в codeigniter

Я использую плагин Mandrill для Codeigniter.

Я создал HTML-шаблон через учетную запись Mandrill с именем fess1 и тегом слияния FNAME после того, как опубликовал его.

Пример:

 ...
<p>
  <span>Hi *|FNAME|*,<br></span>
</p>
....

Теперь я пытаюсь отправить почту из codeigniter, например:

 private  function sendMailMandrill($owner_name,$business_name,$owner_email){

        $message = array('dest_mail' => $owner_email);   

        $message['to'] = array(array('email' => '[email protected]'));

        $mergeVars[] = array(
            'rcpt' => array(array('email' => '[email protected]')),
            'vars' => array(
                array(
                    'name' => 'FNAME',
                    'content' => 'Fessy'
                )
            )
        );

        $message['merge'] = true;
        $template_name = 'fess1';        
        $template_content = array(  // I don't know what I need to provide here, left it empty
                                 array(
                                 'name' => 'example name',
                                 'content' => 'example content'
                                 )
                ); 
        $message['merge_vars'] = $mergeVars;       

        return $this->mandrill->messages_send_template($template_name, $template_content, $message);
    }

Результат:

Я получаю почту, основанную на шаблоне fess1, но с тегом *|FNAME|*.

Похоже, Мандрил не распознал тег слияния.

Я использовал mandrill->messages_send_template, но поскольку мой шаблон хранится в учетной записи Mandrill, я понятия не имею, что мне нужно предоставить для $template_content.

Поэтому я написал фиктивную информацию там.

Я что-то пропустил?

Спасибо,

[ИЗМЕНИТЬ]

Из логов это то, что я посылаю:

{
    "template_name": "fess1",
    "template_content": [
        {
            "name": "example name",
            "content": "example content"
        }
    ],
    "message": {
        "owner_name": "עידו",
        "business_name": "פלאפל מוסקו",
        "dest_mail": "[email protected]",
        "to": [
            {
                "email": "[email protected]"
            }
        ],
        "merge": "true",
        "merge_vars": [
            {
                "rcpt": [
                    {
                        "email": "[email protected]"
                    }
                ],
                "vars": [
                    {
                        "name": "FNAME",
                        "content": "Fessy"
                    }
                ]
            }
        ]
    },
    "key": "xxxxxxxxxxxxxxxx"
}

person Maxim Shoustin    schedule 12.11.2013    source источник


Ответы (1)


Вы можете указать пустую информацию для параметра template_content. Этот параметр позволяет вам используйте области mc:edit в своем шаблоне. Это обязательный параметр, но пустого массива будет достаточно, если весь контент находится в вашем шаблоне в Mandrill.

Что касается того, были ли распознаны merge_vars, первое, что мы рекомендуем, — это проверить журналы API для вашей учетной записи (Настройки > Журналы API), поскольку это покажет вам JSON, который получил Mandrill. Затем вы можете сравнить это с ожидаемым форматом JSON из документов API Mandrill: https://mandrillapp.com/api/docs/messages.JSON.html#method=send-template

Похоже, ваши массивы могут быть не вложены должным образом. После просмотра сгенерированного JSON в сравнении с ожидаемым форматом вы также можете просмотреть документацию по PHP для PHP-клиента Mandrill. Возможно, он не идентичен плагину CodeIgniter, но должен дать вам представление о том, как параметр merge_vars будет структурирован в PHP: https://mandrillapp.com/api/docs/messages.php.html

В mergeVars вы создали массив вместо key:value. Измените его на:

'rcpt' => '[email protected]', 
person Kaitlin    schedule 12.11.2013
comment
Отлично, нашел проблему с rcpt. Кстати, вы знаете, почему я все время получаю почту с префиксом в заголовке: [TEST]. - person Maxim Shoustin; 12.11.2013
comment
Mandrill добавит префикс, если вы отправляете шаблонные тесты из приложения, но в противном случае это, вероятно, будет передано из среды, в которой вы находитесь. Я бы дважды проверил эти журналы API, чтобы увидеть, передается ли он туда . Если это так, то он генерируется еще до того, как попадает в Mandrill. - person Kaitlin; 13.11.2013