Message sender abstraction
go get github.com/demdxx/sendmsg
package main
import (
"fmt"
"log"
"github.com/demdxx/sendmsg"
"github.com/demdxx/sendmsg/email"
"github.com/demdxx/sendmsg/template"
)
func main() {
smtpSender, err := email.New(
email.WithConfig(email.Config{
URL: "smtp.gmail.com",
FromAddress: "hello@mail.com",
FromName: "Mailer",
Password: "password",
Port: 587,
}),
// Default vars for all messages
email.WithVars(map[string]any{
"company": "My Awesome Company",
}),
)
if err != nil {
log.Fatal(err)
}
// ...
templateStorage := template.NewDefaultStorage(registerTmpl, resetPasswordTmpl)
messanger := sendmsg.NewDefaultMessanger(templateStorage).
RegisterSender("email", smtpSender)
// ...
err := messanger.Send(ctx,
sendmsg.WithTemplate("register"),
sendmsg.WithSender("email"),
sendmsg.WithVars(map[string]any{
"name": "Mr. Smith",
"email": "smith@mail.com",
}),
)
}