diff --git a/form_contactus.go b/form_contactus.go new file mode 100644 index 0000000..35d10cf --- /dev/null +++ b/form_contactus.go @@ -0,0 +1,101 @@ +package main + +import ( + "encoding/json" + "fmt" + log "github.com/sirupsen/logrus" + "net/http" + "net/smtp" + "strings" +) + +const formPrefix = "/form/" + +type formInput struct { + w http.ResponseWriter + r *http.Request +} + +func formMain(w http.ResponseWriter, r *http.Request) { + fi := formInput{w, r} + fi.contactUs() +} + +func (m *formInput) contactUs() { + ret := map[string]interface{}{} + ret["success"] = true + m.r.ParseForm() + name := m.r.FormValue("name") + email := m.r.FormValue("email") + message := m.r.FormValue("message") + + ret["name"] = name + ret["email"] = email + ret["message"] = message + + m.apiV1SendJson(ret) + go sendContactUs(name, email, message) + +} + +func (m *formInput) apiV1SendJson(result interface{}) { + //general setup + m.w.Header().Set("Content-Type", "application/json;charset=UTF-8") + + out, e := json.Marshal(result) + if e != nil { + log.Warn("Cannot convert result to json ", result) + } + m.w.Header().Set("Content-Type", "text/json; charset=utf-8") + //apiV1AddTrackingCookie(w, r, ss) //always the last one to set cookies + fmt.Fprint(m.w, string(out)) +} + +func sendContactUs(name string, email string, userInput string) { + // Sender data. + from := "mailer@biukop.com.au" + password := "hpfitsrujgkewcdw" + + // Receiver email address. + to := []string{ + "patrick@biukop.com.au", + } + + // smtp server configuration. + smtpHost := "smtp.gmail.com" + smtpPort := "587" + + raw := `Subject: {name} Contact form on Biukop Web +Content-Type: text/plain; charset="UTF-8" + + Dear Manager, + + We receive a a form submission from biukop.com.au + name : {name} + email : {email} + message: + + {message} + + Kind Regards + Biukop Mailing service team. + ` + + raw = strings.Replace(raw, "{name}", name, -1) + raw = strings.Replace(raw, "{email}", email, -1) + raw = strings.Replace(raw, "{message}", userInput, -1) + + // Message. + message := []byte(raw) + + // Authentication. + auth := smtp.PlainAuth("", from, password, smtpHost) + + // Sending email. + err := smtp.SendMail(smtpHost+":"+smtpPort, auth, from, to, message) + if err != nil { + fmt.Println(err) + return + } + fmt.Println("Email Sent Successfully!") +} diff --git a/http_handler.go b/http_handler.go index 8253ad9..5e24bb7 100644 --- a/http_handler.go +++ b/http_handler.go @@ -14,6 +14,7 @@ var httpEntryMap = map[string]httpEntry{ apiV1Prefix: apiV1Main, apiV1WebSocket: apiV1WebSocketHandler, videoPrefix: videoMain, + formPrefix: formMain, } func setupHTTPHandler() {