如何在 HTML 模板中不转义

How to not escape in HTML templates

正在尝试呈现 HTML 模板,以便通过带有嵌入式附件的电子邮件发送 cid:。问题是,Go 确实转义了,我什么也做不了。

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.

问题是 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