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 " 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 }