mirror of
https://codeberg.org/shroff/phylum.git
synced 2026-02-06 03:29:25 -06:00
44 lines
948 B
Go
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
|
|
}
|