【问题标题】:The merge tags in mandrill don't work in codeignitermandrill 中的合并标签在 codeigniter 中不起作用
【发布时间】:2013-11-24 20:30:44
【问题描述】:

我为 Codeigniter 使用 Mandrill 插件。

我通过 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-&gt;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"
}

【问题讨论】:

    标签: codeigniter mandrill


    【解决方案1】:

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

    至于 merge_vars 是否被识别,我们建议的第一件事是检查您帐户的 API 日志(设置 > 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', 
    

    【讨论】:

    • 很好,发现rcpt 的问题。顺便说一句,你知道为什么我总是收到带有标题前缀的邮件:[TEST]
    • 如果您从应用程序中发送模板测试,Mandrill 将附加一个前缀,否则,它可能是从您所在的环境传递的。我会仔细检查那些 API日志以查看它是否正在通过那里。如果是这样,那么它甚至在到达 Mandrill 之前就已经生成了。
    猜你喜欢
    • 2015-01-11
    • 2014-09-21
    • 2013-10-23
    • 2016-05-19
    • 2014-05-16
    • 2014-04-01
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多