我使用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"
}
答案 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',