Files
email-notification/helper/helper.go
2025-04-18 21:36:12 +07:00

88 lines
1.9 KiB
Go

package helper
import (
"bytes"
"email-notification/config"
"fmt"
"html/template"
"log"
"net/smtp"
"time"
"github.com/google/uuid"
)
func GenerateSessionID() string {
return uuid.New().String()
}
func ParseHTML(filePath string, v any) string {
tmpl, err := template.ParseFiles(filePath)
if err != nil {
log.Printf("Error parsing template: %v", err)
}
// type Data struct {
// Name string
// }
// data := Data{Name: name}
var buf bytes.Buffer
if err := tmpl.Execute(&buf, v); err != nil {
log.Printf("Error executing template: %v", err)
}
return buf.String()
}
func FormatSince(t time.Time) string {
now := time.Now()
dur := now.Sub(t)
years := int(dur.Hours() / 24 / 365)
if years > 0 {
return fmt.Sprintf("%d", years)
}
// months := int(dur.Hours() / 24 / 30)
// if months > 0 {
// return fmt.Sprintf("%d bulan yang lalu", months)
// }
// days := int(dur.Hours() / 24)
// if days > 0 {
// return fmt.Sprintf("%d hari yang lalu", days)
// }
// hours := int(dur.Hours())
// if hours > 0 {
// return fmt.Sprintf("%d jam yang lalu", hours)
// }
// minutes := int(dur.Minutes())
// if minutes > 0 {
// return fmt.Sprintf("%d menit yang lalu", minutes)
// }
return "baru saja"
}
func SendEmail(to []string, cc []string, name, subject, message, htmlString string) error {
sender := "From: " + config.Mail().SMTPSenderName + "\n"
subjectt := "Subject: " + subject + "\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("", config.Mail().AuthEmail, config.Mail().AuthPassword, config.Mail().SMTPHost)
smtpAddr := fmt.Sprintf("%s:%d", config.Mail().SMTPHost, config.Mail().SMTPPort)
err := smtp.SendMail(smtpAddr, auth, config.Mail().AuthEmail, append(to, cc...), messages)
if err != nil {
return err
}
return nil
}