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

Posted

技术标签:

【中文标题】Mandrill — 如何格式化车把模板的复杂数据【英文标题】:Mandrill — How to format complex data for handlebars templates 【发布时间】:2018-10-15 17:39:16 【问题描述】:

我正在尝试通过 Mandrill 发送模板化的电子邮件,但在获取我发送的数据的模板时遇到问题。

The docs 说我需要将我的数据转换为[ name: 'propertyName', content: 'the content' ] 的数组

他们给出的例子如下

数据

"global_merge_vars": [
  
    "name": "user_name",
    "content": "Mandrill_User1"
  
]

模板

<p>Thanks for registering! Your username is user_name.</p>

结果

<p>Thanks for registering! Your username is Mandrill_User1.</p>

就我而言,数据更复杂。

我有类似的东西


  "firstname": "Tyler",
  "lastname": "Durden",
  "fullname": "Tyler Durden",
  "email": "tyler.durden@testy.tes",
  "company": 
    "name": "Company 1",
    "role": 
      "slug": "supplier",
      "name": "Supplier"
    
  

我将其转换为name:content 对如下,以global_merge_vars 发送

[
    name: 'firstname', content: 'Tyler' ,
   name: 'lastname', content: 'Durden' ,
   name: 'fullname', content: 'Tyler Durden' ,
   name: 'email', content: 'tyler.durden@testy.tes' ,
  
    name: 'company',
    content: [
       name: 'name', content: 'Company 1' ,
      
        name: 'role',
        content: [
           name: 'slug', content: 'supplier' ,
           name: 'name', content: 'Supplier' 
        ]
      
    ]
  
]

我的模板是

主题

Dear user.firstname company.name has been approved.

身体

<html>
  <body>
    <p>Dear user.firstname,</p>
    <p>Your company company.name has been approved.</p>
  </body>
</html>

但结果是

主题

亲爱的已被批准。

身体

<html>
  <body>
    <p>Dear ,</p>
    <p>Your company  has been approved.</p>
  </body>
</html>

我已将 Mandrill 设置为使用 handlebars 作为其模板语言。

我错过了什么?

【问题讨论】:

【参考方案1】:

经过反复试验,我已经解决了这个问题。原来只有 top level 对象需要变成name, content 对。低阶对象结构可以保持为普通的 JSON 对象。

所以


  "name": "user"
  "content": 
    "firstname": "Tyler",
    "lastname": "Durden",
    "fullname": "Tyler Durden",
    "email": "tyler.durden@testy.tes",
    "company": 
      "name": "Company 1",
      "role": 
        "slug": "supplier",
        "name": "Supplier"
      
    
  

带有模板主题:Hello user.firstname

和身体

<html>
  <body>
    <p>Dear user.firstname,</p>
    <p>Your company user.company.name has been approved.</p>
  </body>
</html>

工作正常。

文档在这方面有点误导。

【讨论】:

你打败了我的答案。 :) 每个合并标签都需要采用这种格式,但内容可以是 JSON 对象。

以上是关于Mandrill — 如何格式化车把模板的复杂数据的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

mandrill、merge_vars 和车把阵列问题

如何在山魈的车把表达式内发送花括号?

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