Can send an email with a oneshot go routine.

master
Zed A. Shaw 4 weeks ago
parent f9b94f8101
commit e376766315
  1. 19
      common/email/api.go
  2. 15
      features/email/api.go

@ -4,6 +4,7 @@ import (
"github.com/wneessen/go-mail"
"encoding/json"
"context"
"log"
"github.com/redis/go-redis/v9"
)
@ -57,6 +58,9 @@ func (router *Router) DeliverEmail(msg EmailMessage) error {
email_msg.SetBodyString(mail.TypeTextPlain, msg.Text)
email_msg.SetBodyString(mail.TypeTextHTML, msg.HTML)
email_msg.SetGenHeader(mail.HeaderXMailer, "nunya-business")
email_msg.SetGenHeader(mail.HeaderUserAgent, "nunya-business")
if err != nil { return err }
err = router.smtp_client.DialAndSendWithContext(router.ctx, email_msg)
@ -98,3 +102,18 @@ func (sender *Sender) QueueEmail(msg EmailMessage) error {
return nil
}
func OneShotSend(msg EmailMessage) {
ctx := context.Background()
sender := NewSender(ctx, Config{
RedisHostPort: "127.0.0.1:6379",
})
defer sender.Close()
err := sender.QueueEmail(msg)
if err != nil {
log.Print(err)
}
}

@ -2,29 +2,18 @@ package features_email
import (
email "MY/webapp/common/email"
"context"
"github.com/gofiber/fiber/v2"
. "MY/webapp/common"
)
func PostApiEmailSend(c *fiber.Ctx) error {
ctx := context.Background()
msg := email.EmailMessage{
func PostApiEmailSend(c *fiber.Ctx) error {
go email.OneShotSend(email.EmailMessage{
To: c.FormValue("To"),
From: c.FormValue("From"),
Subject: c.FormValue("Subject"),
Text: c.FormValue("Message"),
HTML: c.FormValue("Message"),
}
sender := email.NewSender(ctx, email.Config{
RedisHostPort: "127.0.0.1:6379",
})
defer sender.Close()
err := sender.QueueEmail(msg)
if err != nil { return IfErrNil(err, c) }
return c.Redirect("/email/")
}

Loading…
Cancel
Save