如何使用 sendgrid api 发送 json object 作为 html

How to send json object as html with sendgrid api

我正在尝试使用 sendgrid API 发送电子邮件。我希望消息的 body 包含格式为 HTML.

的 json object
{
    "glossary": {
        "title": "example glossary",
        "GlossDiv": {
            "title": "S",
            "GlossList": {
                "GlossEntry": {
                    "ID": "SGML",
                    "SortAs": "SGML",
                    "GlossTerm": "Standard Generalized Markup Language",
                    "Acronym": "SGML",
                    "Abbrev": "ISO 8879:1986",
                    "GlossDef": {
                        "para": "A meta-markup language, used to create markup languages such as DocBook.",
                        "GlossSeeAlso": ["GML", "XML"]
                    },
                    "GlossSee": "markup"
                }
            }
        }
    }
}

但是电子邮件的 body 看起来像这样:

{ “词汇表”:{ “标题”:“示例词汇表”, “光泽度”:{ “标题”:“S”, “光泽列表”:{ “光泽条目”:{ "编号": "SGML", "SortAs": "SGML", "GlossTerm": "标准通用标记语言", “缩写词”:“SGML”, "缩写": "ISO 8879:1986", “GlossDef”:{ "para": "一种 meta-markup 语言,用于创建标记语言,例如 DocBook。", "GlossSeeAlso": ["GML", "XML"] }, "GlossSee": "标记" } } } } }

当我将 json object 字符串化并使用发送网格 API 作为 HTML 发送时,电子邮件 body 只是一个长文本字符串,这很难阅读 :( 我也试过 NPM 包 retty-print-json

所有这些都会产生相同的结果:电子邮件 body 只是一个长文本字符串

stringify

let html = stringify.JSON(getStats);   
        const msg = {
            to: 'foo@foo.com',         
            from: 'foo@foo.com', 
            subject: datasetTitle,
            html: html
        }

prettyPrintJson

let html = prettyPrintJson.toHtml(getStats);
        const msg = {
            to: 'foo@foo.com',         
            from: 'foo@foo.com', 
            subject: datasetTitle,
            html: html
        }

空白包括换行符,默认折叠在 HTML 中。将漂亮的 JSON 包装在 <pre></pre> 中,输出应该正确显示。您不需要包来添加换行符,只需在序列化时指定额外的参数 JSON.stringify(obj, undefined, 4)