Files
email-notification/app/mail-config.go
2025-04-18 15:10:49 +07:00

94 lines
2.1 KiB
Go

package app
import (
"bytes"
"fmt"
"log"
"net/smtp"
"os"
"strconv"
"text/template"
)
const CONFIG_SMTP_HOST = "smtp.gmail.com"
const CONFIG_SMTP_PORT = 587
const CONFIG_SENDER_NAME = "HIS <hats.nutech@gmail.com>"
const CONFIG_AUTH_EMAIL = "hats.nutech@gmail.com"
const CONFIG_AUTH_PASSWORD = "lbfjfuywqktkexij"
type MailConfig struct {
SMTPHost string
SMTPPort int
SMTPSenderName string
AuthEmail string
AuthPassword string
}
func Mail() *MailConfig {
// dialer := gomail.NewDialer(
// CONFIG_SMTP_HOST,
// CONFIG_SMTP_PORT,
// CONFIG_AUTH_EMAIL,
// CONFIG_AUTH_PASSWORD,
// )
port, err := strconv.Atoi(os.Getenv("SMTP_PORT"))
if err != nil {
fmt.Println("error parsing to int", err.Error())
}
return &MailConfig{
SMTPHost: os.Getenv("SMTP_HOST"),
SMTPPort: port,
SMTPSenderName: os.Getenv("SMTP_SENDER"),
AuthEmail: os.Getenv("AUTH_EMAIL"),
AuthPassword: os.Getenv("AUTH_PASSWORD"),
}
}
func SendEmail(to []string, cc []string, subject, message string) error {
tmpl, err := template.ParseFiles("template/test.html")
if err != nil {
log.Fatalf("Error parsing template: %v", err)
}
fmt.Println("qwqwqw", os.Getenv("PORT"))
type Data struct {
Name string
Company string
}
data := Data{Name: "Salwa Balqis Sulaeman", Company: "HIS"}
var buf bytes.Buffer
if err := tmpl.Execute(&buf, data); err != nil {
log.Fatalf("Error executing template: %v", err)
}
// content, err := os.ReadFile("template/test.html")
// if err != nil {
// fmt.Println("Error reading file:", err)
// return err
// }
htmlString := buf.String()
sender := "From: " + Mail().SMTPSenderName + "\n"
subjectt := "Subject: 👋 Hello from Go\n"
mime := "MIME-version: 1.0;\nContent-Type: text/html; charset=\"UTF-8\";\n\n"
body := htmlString
messages := []byte(sender + subjectt + mime + body)
auth := smtp.PlainAuth("", Mail().AuthEmail, Mail().AuthPassword, Mail().SMTPHost)
smtpAddr := fmt.Sprintf("%s:%d", Mail().SMTPHost, Mail().SMTPPort)
fmt.Println("cek dong", Mail())
err = smtp.SendMail(smtpAddr, auth, Mail().AuthEmail, append(to, cc...), messages)
if err != nil {
return err
}
return nil
}