如何将JSON传递给Mandrill REST API?

问题描述 投票:0回答:1

这是正在使用的Mandrill模板(在在线HTML编辑器中粘贴html):

<html> <head> <script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.2/handlebars.min.js"></script> <script id="entry-template" type="text/x-handlebars-template"> <table style="border-collapse: collapse;padding:0;margin:0 auto;"> </td></tr> <tr> <td colspan='9' style="padding:15px; border-width:1px; border-style:solid; border-color:#1bae7e"> <div style="text-transform:uppercase;font-weight:bold;font-family:sans-serif;font-size:25px;padding-bottom: 5px;color:#414141;">{{customer_name}}</div> <div style="font-weight:normal;font-family:sans-serif;font-size:20px;color:#414141;">Load Updates for {{run_date}}</div> </td> </tr> {{#data}} <td colspan='9' style="text-align:center;padding:15px; border-color:#1bae7e; font-family:sans-serif;font-weight:bold;font-size:20px"> {{label}} </td> <tr> <th style="vertical-align:top; font-size:12px; padding:10px; font-weight:bold;font-family:sans-serif; background-color:#3a3a3a;color:#a5a3a3;border-width:1px 1px 1px;border-color:#3a3a3a #1bae7e #FFF;border-style:solid;text-align:left">ORDER</th> <th style="vertical-align:top; font-size:12px; padding:10px; font-weight:bold;font-family:sans-serif; background-color:#3a3a3a;color:#a5a3a3;border-width:1px 1px 1px;border-color:#3a3a3a #1bae7e #FFF;border-style:solid;text-align:left">CUSTOMER BOL</th> <th style="vertical-align:top; font-size:12px; padding:10px; font-weight:bold;font-family:sans-serif; background-color:#3a3a3a;color:#a5a3a3;border-width:1px 1px 1px;border-color:#3a3a3a #1bae7e #FFF;border-style:solid;text-align:left">STATUS</th> <th style="vertical-align:top; font-size:12px; padding:10px; font-weight:bold;font-family:sans-serif; background-color:#3a3a3a;color:#a5a3a3;border-width:1px 1px 1px;border-color:#3a3a3a #1bae7e #FFF;border-style:solid;text-align:left">ORIGIN</th> <th style="vertical-align:top; font-size:12px; padding:10px; font-weight:bold;font-family:sans-serif; background-color:#3a3a3a;color:#a5a3a3;border-width:1px 1px 1px;border-color:#3a3a3a #1bae7e #FFF;border-style:solid;text-align:left">DESTINATION</th> <th style="vertical-align:top; font-size:12px; padding:10px; font-weight:bold;font-family:sans-serif; background-color:#3a3a3a;color:#a5a3a3;border-width:1px 1px 1px;border-color:#3a3a3a #1bae7e #FFF;border-style:solid;text-align:left">DELIVERY DATE</th> <th style="vertical-align:top; font-size:12px; padding:10px; font-weight:bold;font-family:sans-serif; background-color:#3a3a3a;color:#a5a3a3;border-width:1px 1px 1px;border-color:#3a3a3a #1bae7e #FFF;border-style:solid;text-align:left">CURRENT LOCATION</th> <th style="vertical-align:top; font-size:12px; padding:10px; font-weight:bold;font-family:sans-serif; background-color:#3a3a3a;color:#a5a3a3;border-width:1px 1px 1px;border-color:#3a3a3a #1bae7e #FFF;border-style:solid;text-align:left">MILES OUT</th> </tr> {{#each loads}} <tr> <td style="font-size:12px; padding:10px; font-family:sans-serif; background-color:#1bae7e;border-width:0px 1px 1px;border-color:#a5a3a3 #a5a3a3;border-style:solid;color:#FFF;"> {{order_id}} </td> <td style="font-size:12px; padding:10px; font-family:sans-serif; background-color:#1bae7e;border-width:0px 1px 1px;border-color:#a5a3a3 #a5a3a3;border-style:solid;color:#FFF;"> {{bol_number}} </td> <td style="font-size:12px; padding:10px; font-family:sans-serif; background-color:#1bae7e;border-width:0px 1px 1px;border-color:#a5a3a3 #a5a3a3;border-style:solid;color:#FFF;"> {{status}} </td> <td style="font-size:12px; padding:10px; font-family:sans-serif; background-color:#1bae7e;border-width:0px 1px 1px;border-color:#a5a3a3 #a5a3a3;border-style:solid;color:#FFF;"> {{pickup_city}}, {{pickup_state}}<br/> <i>{{origin_actual_arrival_date}}</i> </td> <td style="font-size:12px; padding:10px; font-family:sans-serif; background-color:#1bae7e;border-width:0px 1px 1px;border-color:#a5a3a3 #a5a3a3;border-style:solid;color:#FFF;"> {{dest_city}}, {{dest_state}}<br/> <i>{{dest_sched_late_arrival_date}}</i> </td> <td style="font-size:12px; padding:10px; font-family:sans-serif; background-color:#1bae7e;border-width:0px 1px 1px;border-color:#a5a3a3 #a5a3a3;border-style:solid;color:#FFF;"> {{delivered_date}} </td> <td style="font-size:12px; padding:10px; font-family:sans-serif; background-color:#1bae7e;border-width:0px 1px 1px;border-color:#a5a3a3 #a5a3a3;border-style:solid;color:#FFF;"> {{current_location_city}}, {{current_location_state}} <br/> <i>as of {{current_location_date}}</i> </td> <td style="font-size:12px; padding:10px; font-family:sans-serif; background-color:#1bae7e;border-width:0px 1px 1px;border-color:#a5a3a3 #a5a3a3;border-style:solid;color:#FFF;"> {{miles_remaining}} </td> </tr> {{/each}} {{/data}} </table> </script> </head> <body> <script> var BODY = document.getElementById("entry-template"); var template = Handlebars.compile(BODY.innerHTML); var dom = template({ "customer_name":"Super Foods", "run_date":"10/14/2015", "data":[ { "label":"Meat", "loads":[ { "order_id": "456123", "miles_remaining": "337", "shipped_date": "10/30/15 08:00", "pickup_city": "FORT WORTH", "pickup_state": "TX", "pickup_zip": "76106", "dest_city": "AMARILLO", "dest_state": "TX", "delivered_date": "11/02/15 19:00", "current_location_city":"Reno", "current_location_state":"NV", "current_location_date":"10/31/15 09:45", "status":"Picking Up", "bol_number":"587975", "origin_actual_arrival_date":"10/31/15 09:45", "dest_sched_late_arrival_date":"11/2/15 16:00", }, { "order_id": "789456", "miles_remaining": "2210", "shipped_date": "10/29/15 13:00", "pickup_city": "FREMONT", "pickup_state": "OH", "pickup_zip": "43420", "dest_city": "MIRA LOMA", "dest_state": "CA", "delivered_date": "10/31/15 12:00", "current_location_city":"Reno", "current_location_state":"NV", "current_location_date":"10/31/15 09:23", "status":"In Transit", "bol_number":"123456", "origin_actual_arrival_date":"10/31/15 09:45", "dest_sched_late_arrival_date":"11/2/15 16:00", } ] }, { "label":"Other", "loads":[ { "order_id": "659832", "miles_remaining": "0", "shipped_date": "10/30/15 09:30", "pickup_city": "FREMONT", "pickup_state": "OH", "pickup_zip": "43420", "dest_city": "MIRA LOMA", "dest_state": "CA", "delivered_date": "10/31/15 06:00", "current_location_city":"Reno", "current_location_state":"NV", "current_location_date":"10/31/15 10:14", "status":"Delivering", "bol_number":"L0314PS", "origin_actual_arrival_date":"10/31/15 09:45", "dest_sched_late_arrival_date":"11/2/15 16:00", } ] } ] }); document.body.innerHTML = dom; </script> </body></html>

这是我的帖子请求的样子:

{
"key": "pfxrmv.................",
"template_name": "customer_order",
"template_content" : [],
"message": {
    "subject": "This is my subject",
    "from_email": "sample@gmailcom",
    "from_name": "Sample Name",
    "to": [
        {
            "email": "[email protected]",
            "name": "Sample2 Name",
            "type": "to"
        }
    ],
    "auto_text": true,
    "inline_css": true,
    "merge": true,
    "merge_language": "handlebars",
    "important": false,
    "merge_vars": [
        {
            "vars": [
                {
                    "name": "entry-template",
                    "content": [
                        {
                            "customer_name": "SUPER FOOD"
                        }
                    ]
                }
            ]
        }
    ]         
},
"async": true}

问题 :执行POST在Postman(REST客户端)或此处的mandrillapp.com中 ,电子邮件发送但电子邮件空白(电子邮件中无内容)。 传递的JSON对象未使用。 如何正确传递JSON对象?

注意事项:

  1. 可能是在错误的位置插入JSON对象。 现在它在"merge_vars" : [{ "vars": [{ "content" : [{ }]
  2. JSON对象可能在“ template_content”中
  3. 可以在上面发布的HTML的<Script >标记中找到此示例中要使用的JSON对象。
email mandrill
1个回答
0
投票

这是我的工作方式:

传递此JSON对象:

{
"customer_name": "Company Foods",
"run_date": "05/14/2016",
"data": [
    {
        "label": "Type 1",
        "loads": [
            {
                "order_id": "8675432",
                "miles_remaining": "169"
            },
            {
                "order_id": "8675421",
                "miles_remaining": "337"
            }
        ]
    },
    {
        "label": "Type 2",
        "loads": [
            {
                "order_id": "8675421",
                "miles_remaining": "0"
            }
        ]
    }
]}

将JSON对象的每个级别放在"global_merge_vars": []下的自己的对象中"global_merge_vars": []

请求如下所示:

{
"key": "pfxrmv.................",
"template_name": "customer_order",
"template_content": [],
"message": {
    "subject": "This is my subject",
    "from_email": "sample@gmailcom",
    "from_name": "Sample Name",
    "to": [
        {
            "email": "[email protected]",
            "name": "Sample2 Name",
            "type": "to"
        }
    ],
    "auto_text": true,
    "inline_css": true,
    "merge": true,
    "merge_language": "handlebars",
    "important": false,
    "global_merge_vars": [
        {
            "name": "customer_name",
            "content": "Company Foods"
        },
        {
            "name": "data",
            "content": [
            {
                    "label":"Type 1",
                    "loads":[
                        {
                            "order_id": "8675432",
                            "miles_remaining": "169"
                        }]

            }]
        }
    ]
},
"async": true}
© www.soinside.com 2019 - 2024. All rights reserved.