Golang - 不要在HTML模板中转义

时间:2016-04-29 07:06:59

标签: go template-engine go-html-template

尝试呈现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进行评估。

1 个答案:

答案 0 :(得分:15)

问题在于,src属性并未严格视为属性,而是作为网址。如果您将其从string更改为template.URL,则可以正常使用。

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

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