Files
phylum/server/internal/mail/mail.go
2025-06-24 09:06:12 +05:30

44 lines
948 B
Go

package mail
import (
"io"
"codeberg.org/shroff/phylum/server/internal/core"
"github.com/sirupsen/logrus"
gomail "gopkg.in/mail.v2"
)
var Cfg Config
var d *gomail.Dialer
type Recipient struct {
Name string
Email string
}
func dialer() *gomail.Dialer {
if d == nil {
d = gomail.NewDialer(Cfg.SMTP.Host, Cfg.SMTP.Port, Cfg.SMTP.Username, Cfg.SMTP.Password)
}
return d
}
func send(e Email, rcpt core.User, params any) error {
d := dialer()
msg := gomail.NewMessage()
msg.SetAddressHeader("From", Cfg.From.Email, Cfg.From.Name)
msg.SetAddressHeader("To", rcpt.Email, rcpt.Name)
msg.SetHeader("Subject", e.Subject)
msg.SetBodyWriter("text/plain", func(w io.Writer) error {
return e.Plain.ExecuteTemplate(w, "base", params)
})
msg.AddAlternativeWriter("text/html", func(w io.Writer) error {
return e.HTML.ExecuteTemplate(w, "base", params)
})
err := d.DialAndSend(msg)
if err != nil {
logrus.Warn(err)
}
return err
}