88 lines
1.9 KiB
Go
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
|
|
}
|