2016-04-29 25 views
5

Cercando di eseguire il rendering di modelli HTML per l'invio tramite e-mail con allegati incorporati con cid:. Il problema è che Go sta scappando e non posso fare nulla.Golang - Non sfuggire in modelli HTML

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

Il mio modello di test sembra più meno così:

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

uscita è:

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

Se il testo è contesto attributo di fuori, essa viene valutata in modo corretto, ma quando si tratta di un L'attributo src diventa sempre tale stringa di errore. Ho provato anche a cambiare il valore da string a template.HTMLAttr ma non succede nulla. Il valore Cid viene sempre valutato per quell'uscita errore #ZgotmplZ.

+0

Eventuali duplicati di [Come sbarazzarsi di ZgotmplZ da HTML/modello in golang?] (Http://stackoverflow.com/questions/36382624/how-to-get-rid- di-zgotmplz-da-html-template-in-golang) e [Vai: unescape css input in HTML] (http://stackoverflow.com/questions/27906812/go-unescape-css-input-in-html) – icza

risposta

11

Il problema è che l'attributo src non viene trattato rigorosamente come attributo, ma come URL. Se lo si cambia da string a template.URL, funziona perfettamente.

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

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

+0

Grazie mille .. Sono totalmente cieco. Ho provato tutti i tipi possibili come HTML, HTMLAttr, anche CSS ecc. Ma non ho visto il tipo di URL e la fine dell'indice. Grazie – Arxeiss