我目前正在学习 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 关注
- 269 浏览
添加回答
举报
0/150
提交
取消