FILE / Unmei/Backend
utils/mail.go
Исходный файл и его история в репозитории.
47 lines
1.0 KiB
Go
47 lines
1.0 KiB
Go
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)
|
|
}
|