mandrill、merge_vars 和车把阵列问题

Posted

技术标签:

【中文标题】mandrill、merge_vars 和车把阵列问题【英文标题】:mandrill, merge_vars and handlebars array issue 【发布时间】:2015-07-09 14:25:52 【问题描述】:

我正在使用带有模板和把手支持的 mandrill 的 HTTP API。

如果我传入一个包裹在数组中的单级对象,电子邮件就可以正常工作。只要我将一个子数组作为变量之一,API 就会爆炸并给我以下错误。

 [Error: Error: An invalid value was specified:
 name: 'cartItems',
  content: [  slug: 'children', name: 'Children', qty: 2, cost: '5.00'  ] 
This doesn't match the specified type:
 name: 'string', content: 'string' ] code: 'E_INVALID_TYPE' 

我的 merge_vars 看起来像这样:

[
  
    'name': 'totalAmount',
    'content': checkout.amount
  ,
  
    'name': 'eventName',
    'content': checkout.cart[0].name
  ,
  
    'name': 'eventId',
    'content': checkout.cart[0].id
  ,
  
    'name': 'cartItems',
    'content': checkout.cart[0].items
  ,
  
    'name': 'firstname',
    'content': checkout.details.firstname
  ,

  
    'name': 'firstname',
    'content': checkout.details.firstname
  ,
  
    'name': 'lastname',
    'content': checkout.details.lastname
  ,
  
    'name': 'email',
    'content': checkout.details.email
  ,
  
    'name': 'phone',
    'content': checkout.details.phone
  ,
  
    'name': 'username',
    'content': checkout.details.username
  ,
]

你可以看到它在cartItems 上轰炸了,这基本上是一个对象数组..

有什么想法吗?根据this 文章山魈与车把支持循环

【问题讨论】:

我需要对我的cartItems 进行字符串化吗? 【参考方案1】:

您发布的是 merge_vars 参数的完整值吗?您链接的文章 (http://kbcdn.mandrill.com/handlebars-example-sendtemplate-api.txt) 中的示例 JSON 大致如下:

merge_vars: [
  
    rcpt:"email@address.com", 
    vars:[
      'name':'cartItems', 'content':checkout.cart[0].items, 
      ...
    ]
  
];

【讨论】:

以上是关于mandrill、merge_vars 和车把阵列问题的主要内容,如果未能解决你的问题,请参考以下文章

使用车把和 Mandrill-dotnet -library 在 mandrill 中的每个循环

抄送收件人的 Mandrill 合并变量不起作用

mandrill 车把每个循环 - 如何检查奇怪的项目

Mandrill — 如何格式化车把模板的复杂数据

在 Mandrill 车把合并变量中使用 HTML

尝试从 Mandrill 发送电子邮件时出现 html 或车把编码问题