Go, Alpine & hosts file
Vấn đề
package tools
import (
"log"
"net/smtp"
"os"
"strings"
"github.com/gomarkdown/markdown"
"github.com/subosito/gotenv"
)
func init() {
gotenv.Load()
}
func Getenv(key, fallBack string) string {
value := os.Getenv(key)
if len(value) == 0 {
return fallBack
}
return value
}
func SendEmail(to, cc, bcc, body, subject string) bool {
port := Getenv("SMTP_PORT", "587")
smtpServerHost := Getenv("SMTP_SERVER", "smtp.gmail.com")
senderEmail := Getenv("SMTP_USERNAME", "")
senderPassword := Getenv("SMTP_PASSWORD", "")
if smtpServerHost == "" || senderEmail == "" || senderPassword == "" {
return false
}
headers := "From: " + senderEmail
headers = headers + "\nTo: " + to
if len(cc) > 0 {
headers += "\nCc: " + cc
}
if len(bcc) > 0 {
headers += "\nBcc: " + bcc
}
headers = strings.ReplaceAll(headers, ",", ";")
smtpServer := smtpServerHost + ":" + port
mime := "Content-Type: text/html; charset=UTF-8"
body = string(markdown.ToHTML([]byte(body), nil, nil))
msg := []byte(headers + "\nSubject: " + subject + "\n" + mime + "\n" + body + "\n")
auth := smtp.PlainAuth("", senderEmail, senderPassword, smtpServerHost)
err := smtp.SendMail(smtpServer, auth, senderEmail, strings.Split(to, ","), msg)
if err != nil {
log.Println(err)
return false
}
return true
}Tìm hiểu và giải quyết
Các links đọc Thêm
Last updated