Basic sending emails with templates but using fiber's templates doesn't work since it doesn't really support plain text.

master
Zed A. Shaw 4 weeks ago
parent 2600b60b8b
commit 9302a97f4d
  1. 14
      common/email/api.go
  2. 5
      common/email/data.go
  3. 3
      emails/signup.html
  4. 4
      features/email/api.go
  5. 5
      tools/cmd/qmgr/main.go
  6. 4
      views/email/index.html

@ -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)

@ -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 {

@ -0,0 +1,3 @@
<h1>Welcome!</h1>
<p>You signed up!</p>

@ -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/")

@ -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("<h1>Random number %v</h1>", 200),
TextTemplate: "signup",
HTMLTemplate: "signup",
}
sender := email.NewSender(ctx)

@ -12,9 +12,9 @@
<label for="Subject">Subject:</label>
<input id="Subject" name="Subject">
<label for="Message">Message</label>
<label for="Template">Template</label>
<textarea id="Message" name="Message" cols="80" rows="10"></textarea>
<input id="Template" name="Template"></textarea>
<input type="submit" value="Send!">
</block>

Loading…
Cancel
Save