1

我一直在尝试使用 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 乱码。

第 1 项和第 5 项是 Sendgrid 接受的唯一解决方案,但发送的 html 不正确(如屏幕截图所示)。

逃脱屠杀

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

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

4

1 回答 1

0

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

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

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

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

// import "strings"

strings.Replace(emailtpl, `"`, `\"`, -1)
于 2018-04-06T15:59:49.377 回答