package email import ( "crypto/tls" "net/smtp" "github.com/jordan-wright/email" ) type Config struct { SMTP SMTPConfig `envPrefix:"SMTP_"` From string `env:"FROM"` } type SMTPConfig struct { Host string `env:"HOST"` Port string `env:"PORT"` User string `env:"USER"` Password string `env:"PASSWORD"` } type Service struct { from string pool *email.Pool cfg Config } func New(cfg Config) (s *Service, err error) { p, err := email.NewPool( cfg.SMTP.Host+":"+cfg.SMTP.Port, 1, smtp.PlainAuth( "", cfg.SMTP.User, cfg.SMTP.Password, cfg.SMTP.Host, ), &tls.Config{ InsecureSkipVerify: true, // set false in production ServerName: cfg.SMTP.Host, // must match the SMTP host }) if err != nil { return } s = &Service{ from: cfg.From, pool: p, cfg: cfg, } return }