diff --git a/go.mod b/go.mod index 80945b9..0f8d814 100644 --- a/go.mod +++ b/go.mod @@ -4,10 +4,7 @@ go 1.20 require ( github.com/sirupsen/logrus v1.9.3 - gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df + github.com/wneessen/go-mail v0.4.2 ) -require ( - golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 // indirect - gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect -) +require golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 // indirect diff --git a/go.sum b/go.sum index 3e28f48..0bf25c4 100644 --- a/go.sum +++ b/go.sum @@ -8,12 +8,10 @@ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVs github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/wneessen/go-mail v0.4.2 h1:wISuU9LOGqrA7pxy7OipRtwoExXTzuGKmAjb8gYwc00= +github.com/wneessen/go-mail v0.4.2/go.mod h1:zxOlafWCP/r6FEhAaRgH4IC1vg2YXxO0Nar9u0IScZ8= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 h1:0A+M6Uqn+Eje4kHMK80dtF3JCXC4ykBgQG4Fe06QRhQ= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= -gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AWRXxgwEyPp2z+p0+hgMuE= -gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/mailme.go b/mailme.go index 9dc91c9..0fee131 100644 --- a/mailme.go +++ b/mailme.go @@ -3,6 +3,7 @@ package mailme import ( "bytes" "errors" + "fmt" "html/template" "io" "log" @@ -11,9 +12,8 @@ import ( "sync" "time" - "gopkg.in/gomail.v2" - "github.com/sirupsen/logrus" + "github.com/wneessen/go-mail" ) // TemplateRetries is the amount of time MailMe will try to fetch a URL before giving up @@ -65,17 +65,26 @@ func (m *Mailer) Mail(to, subjectTemplate, templateURL, defaultTemplate string, return err } - mail := gomail.NewMessage() - mail.SetHeader("From", m.From) - mail.SetHeader("To", to) - mail.SetHeader("Subject", subject.String()) - mail.SetBody("text/html", body) + msg := mail.NewMsg() + if err := msg.From(m.From); err != nil { + return fmt.Errorf("failed to set mail FROM address: %w", err) + } + if err := msg.To(to); err != nil { + return fmt.Errorf("failed to set mail TO address: %w", err) + } + msg.Subject(subject.String()) + msg.SetBodyString(mail.TypeTextHTML, body) - dial := gomail.NewDialer(m.Host, m.Port, m.User, m.Pass) + client, err := mail.NewClient(m.Host, mail.WithPort(m.Port), mail.WithUsername(m.User), + mail.WithPassword(m.Pass)) if m.LocalName != "" { - dial.LocalName = m.LocalName + client, err = mail.NewClient(m.Host, mail.WithPort(m.Port), mail.WithUsername(m.User), + mail.WithPassword(m.Pass), mail.WithHELO(m.LocalName)) + } + if err != nil { + return fmt.Errorf("failed to create mail client: %w", err) } - return dial.DialAndSend(mail) + return client.DialAndSend(msg) }