diff --git a/common/email/api.go b/common/email/api.go index bf20430..f9c97e2 100644 --- a/common/email/api.go +++ b/common/email/api.go @@ -6,9 +6,17 @@ import ( "context" "log" "github.com/redis/go-redis/v9" + "github.com/gofiber/template/html/v2" "MY/webapp/config" + "strings" ) +var HTMLTemplates *html.Engine + +func init() { + HTMLTemplates = html.New("./emails", ".html") +} + func NewSender(ctx context.Context) (Sender){ client := redis.NewClient(&redis.Options{ Addr: config.Settings.Redis.HostPort, @@ -56,8 +64,10 @@ func (router *Router) DeliverEmail(msg EmailMessage) error { if err != nil { return err } email_msg.Subject(msg.Subject) - email_msg.SetBodyString(mail.TypeTextPlain, msg.Text) - email_msg.SetBodyString(mail.TypeTextHTML, msg.HTML) + + out := new(strings.Builder) + err = HTMLTemplates.Render(out, msg.HTMLTemplate, msg.Data) + email_msg.SetBodyString(mail.TypeTextHTML, out.String()) if config.Settings.Email.XMailer != "" { email_msg.SetGenHeader(mail.HeaderXMailer, config.Settings.Email.XMailer) diff --git a/common/email/data.go b/common/email/data.go index c8ef520..ceabbb2 100644 --- a/common/email/data.go +++ b/common/email/data.go @@ -10,8 +10,9 @@ type EmailMessage struct { To string From string Subject string - Text string - HTML string + Data any + TextTemplate string + HTMLTemplate string } type Sender struct { diff --git a/emails/signup.html b/emails/signup.html new file mode 100644 index 0000000..d3aadde --- /dev/null +++ b/emails/signup.html @@ -0,0 +1,3 @@ +
You signed up!
diff --git a/features/email/api.go b/features/email/api.go index b1c783d..b3bc87e 100644 --- a/features/email/api.go +++ b/features/email/api.go @@ -11,8 +11,8 @@ func PostApiEmailSend(c *fiber.Ctx) error { To: c.FormValue("To"), From: c.FormValue("From"), Subject: c.FormValue("Subject"), - Text: c.FormValue("Message"), - HTML: c.FormValue("Message"), + TextTemplate: c.FormValue("Template"), + HTMLTemplate: c.FormValue("Template"), }) return c.Redirect("/email/") diff --git a/tools/cmd/qmgr/main.go b/tools/cmd/qmgr/main.go index 264ab63..de39b81 100644 --- a/tools/cmd/qmgr/main.go +++ b/tools/cmd/qmgr/main.go @@ -3,7 +3,6 @@ package main import ( "MY/webapp/config" email "MY/webapp/common/email" - "fmt" "context" ) @@ -16,8 +15,8 @@ func main() { To: "tina.recip@example.com", From: "toni.sender@example.com", Subject: "This is my first mail.", - Text: fmt.Sprintf("Random number %v", 200), - HTML: fmt.Sprintf("