Как встроить HTML в JSON в формате, который принимает API Sendgrid?

Я пытался отправить сообщение электронной почты в формате HTML с помощью API Sendgrid, но мне не удалось внедрить 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 в запрос API Sendgrid, который Sendgrid принимает и правильно отображает?

1 ответ

Глядя на api docs Sendgrid, похоже, что он должен принимать HTML. Вам нужно будет правильно экранировать html в строке json (и установить content->type = "text/html").

В вашем примере шаблона единственная проблема, которую я вижу, это двойные кавычки в вашем метатеге. В качестве быстрого теста, чтобы убедиться, что все работает, я бы попытался отправить следующую HTML-строку:

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

Если эта html-строка успешна, вам нужно поработать над экранированием исходного примера html-строки. Единственные недопустимые символы, которые я вижу, - это двойные кавычки, которые нужно экранировать в json с обратной косой чертой. Я не уверен, что у go есть специальная функция для этого, но похоже, что это должно работать:

// import "strings"

strings.Replace(emailtpl, `"`, `\"`, -1)
Другие вопросы по тегам