Как встроить 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>
Вещи, которые я пробовал:
- html.EscapeString (emailtpl)
- strconv.Quote (emailtpl)
- использование обратных галочек `внутри шаблона json
- перенос значения с одинарными кавычками для значения в шаблоне json.
- 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)