如何以Sendgrid API接受的格式在hson中嵌入html?

时间:2018-04-03 08:14:30

标签: json go sendgrid-api-v3 html-escape strconv

我一直在尝试使用Sendgrid API发送HTML电子邮件,但我没有成功将html嵌入到json请求中。

这是我要发送的html示例(emailtpl):

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body></body></html>

我尝试过的事情:

  1. html.EscapeString(emailtpl)
  2. strconv.Quote(emailtpl)
  3. 在json模板中使用反引号`
  4. 使用单引号为json模板中的值包装值。
  5. base64.StdEncoding.EncodeToString([] byte(emailtpl))只显示base64乱码。
  6. 项目#1和#5是Sendgrid已接受的唯一解决方案,但发送的html不正确(如屏幕截图所示)。

    escape-butchered

    项目#2 - #4都导致状态400错误请求。

    有没有人知道如何将html嵌入到Sendgrid接受的Sendgrid API请求中并且它正确呈现?

1 个答案:

答案 0 :(得分:0)

查看Sendgrid api文档,它看起来应该接受html。您需要在json字符串中正确转义html(并设置content-&gt; type =&#34; text / html&#34;)。

在您的示例模板中,我看到的唯一问题是元标记中的双引号。作为确保一切正常的快速测试,我会尝试发送以下html字符串:

<html><head></head><body>Hi!</body></html>

如果该html字符串成功,那么您需要处理转义原始html字符串示例。我看到的唯一无效字符是双引号,需要在带有反斜杠的json中进行转义。我不确定go是否具有特定的功能,但看起来这应该有效:

// import "strings"

strings.Replace(emailtpl, `"`, `\"`, -1)