2016-04-29 70 views
5

嘗試呈現HTML模板以通過帶有嵌入附件的電子郵件發送,內容爲cid:。問題是,Go會逃跑,我什麼也做不了。Golang - 不要在HTML模板中逃脫

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

+0

的可能的複製[如何從HTML /模板golang擺脫ZgotmplZ的?](http://stackoverflow.com/questions/36382624/how-to-get-rid- of-zgotmplz-from-html-template-in-golang)和[Go:unescape css input in HTML](http://stackoverflow.com/questions/27906812/go-unescape-css-input-in-html) – icza

回答

11

問題是,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

+0

非常感謝..我完全失明。我嘗試了所有可能的類型,如HTML,HTMLAttr,甚至CSS等,但我沒有看到URL類型和索引結束。謝謝 – Arxeiss