package utils import ( "bytes" "fmt" "html/template" "log" "net/smtp" "os" ) const ( format = "From: %v\r\n" + "To: %v\r\n" + "Subject: %v\r\n" + "Content-Type: text/html; charset=UTF-8\r\n" + "MIME-version: 1.0;\r\n\r\n" + "%v\r\n" ) var mailAuth = smtp.PlainAuth("", os.Getenv("MAIL_USERNAME"), os.Getenv("MAIL_PASSWORD"), os.Getenv("MAIL_HOST")) func SendMail(to string, subject string, body string) { msg := []byte(fmt.Sprintf(format, os.Getenv("MAIL_USERNAME"), to, subject, body)) err := smtp.SendMail(os.Getenv("MAIL_HOST")+":587", mailAuth, os.Getenv("MAIL_USERNAME"), []string{to}, msg) if err != nil { log.Println(err) } } func SendMailTemplate(to string, subject string, name string, data interface{}) { wd, err := os.Getwd() if err != nil { log.Println(err) } t, err := template.ParseFiles(wd + `/mail_templates/` + name) if err != nil { log.Println(err) } buf := new(bytes.Buffer) if err := t.Execute(buf, data); err != nil { log.Println(err) } body := buf.String() SendMail(to, subject, body) }