我目前正在學習 Go,我正在嘗試創建一個聯系表單。我使用默認net/smtp包來發送我的郵件,但后來我偶然發現了Gomail。它使發送電子郵件變得更加容易。這是聯系表格的html:<h1>Contact Us</h1><form action="/" method="post" novalidate> <div> <label>Email Address</label> <input type="email" name="email" value="{{ .Email }}"> </div> <div> <label>Message:</label> <textarea name="content">{{ .Content }}</textarea> </div> <div> <input type="submit" value="Submit"> </div></form>我正在使用 Go 的html/template包來獲取值。main.go :package mainimport ( "fmt" "github.com/bmizerany/pat" "gopkg.in/gomail.v2" "html/template" "log" "net/http")func main() { mux := pat.New() mux.Get("/", http.HandlerFunc(index)) mux.Post("/", http.HandlerFunc(send)) mux.Get("/confirmation", http.HandlerFunc(confirmation)) log.Println("Listening...") http.ListenAndServe(":2016", mux)}func index(w http.ResponseWriter, r *http.Request) { render(w, "templates/index.html", nil)}func send(w http.ResponseWriter, r *http.Request) { m := &Message{ Email: r.FormValue("email"), Content: r.FormValue("content"), } if err := m.Deliver(); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } http.Redirect(w, r, "/confirmation", http.StatusSeeOther)}func confirmation(w http.ResponseWriter, r *http.Request) { render(w, "templates/confirmation.html", nil)}func render(w http.ResponseWriter, filename string, data interface{}) { tmpl, err := template.ParseFiles(filename) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } if err := tmpl.Execute(w, data); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) }}type Message struct { Email string Content string}基本上它的作用是提供索引頁面(聯系表格)和確認頁面。它還定義了Email和Contact字符串。如果我想打印消息的內容,我可以只使用m.Content,但是由于 Gomail 要求提供正文并提供 html,我真的不知道如何從表單中獲取字符串并像這樣添加它:m.SetBody("text/html", "<b>Message</b>: <!-- Content Goes Here -->")`
- 1 回答
- 0 關注
- 265 瀏覽
添加回答
舉報
0/150
提交
取消