mandrill中的合并标签在codeigniter中不起作用

时间:2013-11-12 15:40:41

标签: codeigniter mandrill

我使用Mandrill插件进行Codeigniter。

在我发布之后,我通过Mandrill帐户创建了HTML模板,该帐户名为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' => 'mim@wefi.com'));

        $mergeVars[] = array(
            'rcpt' => array(array('email' => 'mim@wefi.com')),
            '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无法识别合并标签。

我使用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": "maxim@wifi.com",
        "to": [
            {
                "email": "maxim@wifi.com"
            }
        ],
        "merge": "true",
        "merge_vars": [
            {
                "rcpt": [
                    {
                        "email": "maxim@wifi.com"
                    }
                ],
                "vars": [
                    {
                        "name": "FNAME",
                        "content": "Fessy"
                    }
                ]
            }
        ]
    },
    "key": "xxxxxxxxxxxxxxxx"
}

1 个答案:

答案 0 :(得分:2)

您可以为template_content参数提供空白信息。该参数允许您use mc:edit regions in your template。它是必需参数,但如果所有内容都在Mandrill的模板中,则空白数组就足够了。

至于merge_vars是否被识别,我们建议首先检查您帐户的API日志(设置&gt; API日志),因为这会显示Mandrill收到的JSON。然后,您可以将其与Mandrill API文档中的预期JSON格式进行比较:https://mandrillapp.com/api/docs/messages.JSON.html#method=send-template

看起来你的数组可能没有按预期嵌套。一旦您查看与预期格式相比生成的JSON,您还可以查看Mandrill PHP客户端的PHP文档。它可能与CodeIgniter插件不同,但应该让您了解如何在PHP中构造merge_vars参数:https://mandrillapp.com/api/docs/messages.php.html

mergeVars中,您创建了数组key:value。将其更改为:

'rcpt' => 'mim@wefi.com',