2017-01-19 11 views
0

私はGolangを使用してhtml電子メールを送信しようとしていますが、ネイティブのGolang html/templateパッケージを使用する代わりに、私はPongo2でそれをやろうとしています。この質問に Go - Pongo2を使用して一時的なバイトバッファにテンプレートをレンダリングするには?

は: Is it possible to create email templates with CSS in Google App Engine Go?

ユーザーは、私がここでの問題

var tmpl = pongo2.Must(pongo2.FromFile("template.html")) 
buff := new(bytes.Buffer) 
tmpl.Execute(buff, pongo2.Context{"data": "best-data"}, w) 

をやろうとしていますどのようなHTML /テンプレート

var tmpl = template.Must(template.ParseFiles("templates/email.html")) 

buff := new(bytes.Buffer) 
if err = tmpl.Execute(buff, struct{ Name string }{"Juliet"}); err != nil { 
    panic(err.Error()) 
} 
msg := &mail.Message{ 
    Sender: "[email protected]", 
    To:  []string{"Juliet <[email protected]>"}, 
    Subject: "See you tonight", 
    Body:  "...you put here the non-HTML part...", 
    HTMLBody: buff.String(), 
} 
c := appengine.NewContext(r) 
if err := mail.Send(c, msg); err != nil { 
    c.Errorf("Alas, my user, the email failed to sendeth: %v", err) 

を使用しているこの例を、提供していますpongo2.Execute()は、バフではなくコンテキストデータの入力のみを許可します。 を使用してテンプレートを書き込むことが目標です。メールを送信するためにHTMLをレンダリングすることもできます。

私の質問は間違っているのですか?私が達成しようとしていることは可能ですか?そのHTMLをバフにレンダリングする方法を見つけることができれば、後で部分として使用することができますbuff.String()、それは私がHTMLの本文にそれを入力することができます。

答えて

2

利用代わりExecuteExecuteWriterUnbuffered

tmpl.ExecuteWriterUnbuffered(pongo2.Context{"data": "best-data"}, &buff) 

wはあなたの例では何をしているかわかりません。あなたが書きたいと思っている別のWriterでもあれば、io.MultiWriterを使うことができます。

// writes to w2 will go to both buff and w 
w2 := io.MultiWriter(&buff, w) 
関連する問題