Golang-не убегайте в HTML шаблонах


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

tplVars := map[string]interface{}{
    "Dog": "cid:dog.png",
    "Cat": "cid:cat.png",
}

Мой шаблон тестирования выглядит примерно так:

Dog: <img src="{{.Dog}}">
Cat: {{.Cat}}

Вывод:

Dog: <img src="#ZgotmplZ">
Cat: cid:cat.png

Если текст находится вне контекста атрибута, он вычисляется правильно, но когда он является атрибутом src, он всегда становится этой строкой ошибки. Я попытался также изменить значение с string на template.HTMLAttr, но ничего не получилось. Значение Cid всегда вычисляется по этому выходу ошибки #ZgotmplZ.

1 8

1 ответ:

Проблема в том, что атрибут src рассматривается не строго как атрибут, а как URL-адрес. Если вы измените его с string на template.URL, он работает просто отлично.

tplVars := map[string]interface{}{
    "Dog": template.URL("cid:dog.png"),
    "Cat": "cid:cat.png",
}

Https://play.golang.org/p/ZN27nGnUE9