2016-04-29 11 views
5

Der Versuch, HTML-Vorlagen zum Senden per E-Mail mit eingebetteten Anlagen mit cid: zu rendern. Das Problem ist, dass Go entkommt und ich nichts tun kann.Golang - nicht in HTML-Vorlagen entkommen

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

Meine Testvorlage sieht eher weniger wie folgt aus:

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

Ausgang ist:

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

Wenn Text außerhalb Attribut Zusammenhang ist es richtig ausgewertet wird, aber wenn es eine ist src Attribut wird immer diese Fehlerzeichenfolge. Ich habe auch versucht, den Wert von string zu template.HTMLAttr ändern, aber nichts passieren. Der CID-Wert wird immer mit dieser Fehlerausgabe #ZgotmplZ ausgewertet.

+0

Mögliche Duplikat von [Wie aus html/template in golang los ZgotmplZ erhalten?] (Http://stackoverflow.com/questions/36382624/how-to-get-rid- von-zgotmplz-from-html-Vorlage-in-Golang) und [Go: Unescape css-Eingabe in HTML] (http://stackoverflow.com/questions/27906812/go-unescape-css-input-in-html) – icza

Antwort

11

Das Problem ist, dass das src Attribut nicht streng als ein Attribut, sondern als eine URL behandelt wird. Wenn Sie es von einem string zu einem template.URL ändern, funktioniert es gut.

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

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

+0

Vielen Dank .. Ich bin total blind. Ich habe alle möglichen Typen wie HTML, HTMLAttr, sogar CSS usw. ausprobiert. Aber ich habe den URL-Typ und das Ende des Indexes nicht gesehen. Vielen Dank – Arxeiss