2016-04-29 50 views
5

cid:という添付ファイルが埋め込まれた電子メールでHTMLテンプレートをレンダリングしようとしています。問題は、ゴーが脱出して何もできないということです。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属性は常にそのエラー文字列になります。私もからtemplate.HTMLAttrに値を変更しようとしましたが、何も起こりません。 Cid値は常にそのエラー出力#ZgotmplZに評価されます。

+0

の可能性のある重複[golang中のhtml /テンプレートからZgotmplZを取り除くには?](http://stackoverflow.com/questions/36382624/how-to-get-rid- of-zgotmplz-from-html-template-in-golang)と[Go:HTMLのunescape css入力](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

関連する問題