oef/mail/mail.go

79 lines
1.6 KiB
Go

package mail
import (
"bytes"
"crypto/tls"
"text/template"
"git.andreafazzi.eu/andrea/oef/config"
"gopkg.in/gomail.v2"
)
type Subscriber interface {
NameForMail() string
Username() string
Password() string
To() string
}
var (
mail = `
Spettabile {{.NameForMail}},
grazie per l'interesse manifestato per le Olimpiadi di Economia e Finanza.
Di seguito riportiamo le credenziali di accesso tramite le quali potrà gestire le iscrizioni dei suoi studenti alla competizione (Fase Regionale).
username: {{.Username}}
password: {{.Password}}
Per accedere alla pagina di login occorrerà seguire questo link
https://iscrizioni.olimpiadi-economiaefinanza.it/
ed inserire le credenziali riportate sopra (si consiglia di effettuare un copia/incolla).
Cordialmente,
Lo Staff delle OEF 2020.
`
subject = "[OEF2020] - Credenziali di accesso della scuola"
mailTpl *template.Template
)
func init() {
mailTpl = template.Must(template.New("subscription_mail").Parse(mail))
}
func SendSubscriptionMail(rcv Subscriber) error {
var body bytes.Buffer
m := gomail.NewMessage()
m.SetHeader("Subject", subject)
m.SetHeader("From", config.Config.Smtp.From)
m.SetHeader("To", rcv.To())
m.SetHeader("Bcc", config.Config.Smtp.Bcc)
err := mailTpl.Execute(&body, rcv)
if err != nil {
return err
}
m.SetBody("text/plain", body.String())
dialer := gomail.NewDialer(
config.Config.Smtp.Host,
config.Config.Smtp.Port,
config.Config.Smtp.Username,
config.Config.Smtp.Password,
)
dialer.TLSConfig = &tls.Config{InsecureSkipVerify: true}
if err := dialer.DialAndSend(m); err != nil {
return err
}
return nil
}