From f9b94f81010dcb1fc706ad181a8af654f1d5b763 Mon Sep 17 00:00:00 2001 From: "Zed A. Shaw" Date: Thu, 8 Jan 2026 12:53:01 -0500 Subject: [PATCH] Simple email sending example. --- features/email/api.go | 27 +++++++++++++++++++++++---- tools/cmd/mailer/main.go | 33 ++++++++++++++++++++------------- views/email/index.html | 22 ++++++++++++++++++++-- 3 files changed, 63 insertions(+), 19 deletions(-) diff --git a/features/email/api.go b/features/email/api.go index 8bae348..166012f 100644 --- a/features/email/api.go +++ b/features/email/api.go @@ -1,15 +1,34 @@ package features_email import ( + email "MY/webapp/common/email" + "context" "github.com/gofiber/fiber/v2" + . "MY/webapp/common" ) -func GetApiExample(c *fiber.Ctx) error { - tables := []string{"To", "From"} +func PostApiEmailSend(c *fiber.Ctx) error { + ctx := context.Background() - return c.JSON(tables) + msg := 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/") } func SetupApi(app *fiber.App) { - app.Get("/api/email/send", GetApiExample) + app.Post("/api/email/send", PostApiEmailSend) } diff --git a/tools/cmd/mailer/main.go b/tools/cmd/mailer/main.go index ea44eea..73afeb8 100644 --- a/tools/cmd/mailer/main.go +++ b/tools/cmd/mailer/main.go @@ -2,23 +2,17 @@ package main import ( "context" - "time" "fmt" + "os" + "os/signal" + "syscall" email "MY/webapp/common/email" ) -func EmailReceiver(ctx context.Context) { - router, err := email.NewRouter(ctx, email.Config{ - RedisHostPort: "127.0.0.1:6379", - SMTPHost: "localhost", - SMTPPort: 1025, - }) - - if err != nil { panic(err) } - defer router.Close() - +func EmailReceiver(router *email.Router) { for { err := router.HandleEmailRequest() + fmt.Println("EMAIL ROUTED!") if err != nil { fmt.Println(err) @@ -29,8 +23,21 @@ func EmailReceiver(ctx context.Context) { func main() { ctx := context.Background() - go EmailReceiver(ctx) + router, err := email.NewRouter(ctx, email.Config{ + RedisHostPort: "127.0.0.1:6379", + SMTPHost: "localhost", + SMTPPort: 1025, + }) + + if err != nil { panic(err) } + defer router.Close() + + go EmailReceiver(&router) + + c := make(chan os.Signal, 1) + signal.Notify(c, os.Interrupt, syscall.SIGINT, syscall.SIGTERM) - time.Sleep(time.Second * 100) + _ = <-c + fmt.Println("Shutdown now...") } diff --git a/views/email/index.html b/views/email/index.html index bee3867..a9f9705 100644 --- a/views/email/index.html +++ b/views/email/index.html @@ -1,3 +1,21 @@ -

email

+

Send An Email

-

Replace me.

+ +
+ + + + + + + + + + + + + + + + +