package mailer
import (
"bytes"
"html/template"
"net/smtp"
"git.linuxforward.com/byom/byom-onboard/internal/platform/config"
)
const welcomeEmailTemplate = `
Bienvenue sur Byom!
Votre application a été configurée avec succès et est prête à être utilisée.
Informations d'accès :
---------------------
Nom d'utilisateur : {{.Username}}
Mot de passe : {{.Password}}
URL de votre application :
--------------------------
{{range .Subdomains}}
{{.}}
{{end}}
Application principale : {{.WebAppURL}}
Pour bien commencer :
---------------------
{{.SetupGuide}}
Pour des raisons de sécurité, nous vous recommandons de changer votre mot de passe lors de votre première connexion.
Si vous avez besoin d'aide, n'hésitez pas à contacter notre équipe d'assistance.
Cordialement,
Byom
`
type Mailer struct {
auth *smtp.Auth
serverAddr string
from string
}
type EmailData struct {
Username string
Password string
Subdomains []string
WebAppURL string
SetupGuide string
}
func NewMailer(config *config.MailerConfig) *Mailer {
auth := smtp.PlainAuth(
config.Identity,
config.Username,
config.Password,
config.Host,
)
serverAddr := config.Host + ":" + config.Port
return &Mailer{
auth: &auth,
serverAddr: serverAddr,
from: config.Username,
}
}
func (m *Mailer) SendEmail(to string, data *EmailData) error {
tmpl := template.Must(template.New("welcomeEmail").Parse(welcomeEmailTemplate))
var tpl bytes.Buffer
err := tmpl.Execute(&tpl, data)
if err != nil {
return err
}
body := tpl.String()
return smtp.SendMail(m.serverAddr, *m.auth, m.from, []string{to}, []byte(body))
}