37 lines
1 KiB
Go
37 lines
1 KiB
Go
package mailer
|
|
|
|
import (
|
|
"strconv"
|
|
"sync/atomic"
|
|
)
|
|
|
|
type Mailer struct {
|
|
Password string
|
|
HostOnly string
|
|
HostWithPort string
|
|
From string
|
|
Footer string
|
|
UnsubscribeUrl string
|
|
UnsubscribeCodeFn UnsubFunc
|
|
Send map[string]func(email string)
|
|
SendKeyed map[string]func(email string, code string)
|
|
mail_counter *atomic.Uint64
|
|
wanted_send *atomic.Uint64
|
|
}
|
|
|
|
// UnsubscribeFunc should take a username and create an opaque string
|
|
type UnsubFunc func(username string) string
|
|
|
|
// New creates a mailer with your configured settings
|
|
func New(from string, password string, host string, port int, unsubscribe string, footer string, unsub UnsubFunc) Mailer {
|
|
p := strconv.FormatInt(int64(port), 10)
|
|
return Mailer{
|
|
Password: password, // utils.GlobalConfig.SMTP_PASSWORD
|
|
From: from,
|
|
HostOnly: host,
|
|
HostWithPort: host + ":" + p,
|
|
Footer: footer,
|
|
UnsubscribeUrl: unsubscribe,
|
|
UnsubscribeCodeFn: unsub,
|
|
}
|
|
}
|