mailer.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package mailer
  2. import (
  3. "bytes"
  4. "html/template"
  5. "net/smtp"
  6. "git.linuxforward.com/byom/byom-onboard/internal/platform/config"
  7. )
  8. const welcomeEmailTemplate = `
  9. Bienvenue sur Byom!
  10. Votre application a été configurée avec succès et est prête à être utilisée.
  11. Informations d'accès :
  12. ---------------------
  13. Nom d'utilisateur : {{.Username}}
  14. Mot de passe : {{.Password}}
  15. URL de votre application :
  16. --------------------------
  17. {{range .Subdomains}}
  18. {{.}}
  19. {{end}}
  20. Application principale : {{.WebAppURL}}
  21. Pour bien commencer :
  22. ---------------------
  23. {{.SetupGuide}}
  24. Pour des raisons de sécurité, nous vous recommandons de changer votre mot de passe lors de votre première connexion.
  25. Si vous avez besoin d'aide, n'hésitez pas à contacter notre équipe d'assistance.
  26. Cordialement,
  27. Byom
  28. `
  29. type Mailer struct {
  30. auth *smtp.Auth
  31. serverAddr string
  32. from string
  33. }
  34. type EmailData struct {
  35. Username string
  36. Password string
  37. Subdomains []string
  38. WebAppURL string
  39. SetupGuide string
  40. }
  41. func NewMailer(config *config.MailerConfig) *Mailer {
  42. auth := smtp.PlainAuth(
  43. config.Identity,
  44. config.Username,
  45. config.Password,
  46. config.Host,
  47. )
  48. serverAddr := config.Host + ":" + config.Port
  49. return &Mailer{
  50. auth: &auth,
  51. serverAddr: serverAddr,
  52. from: config.Username,
  53. }
  54. }
  55. func (m *Mailer) SendEmail(to string, data *EmailData) error {
  56. tmpl := template.Must(template.New("welcomeEmail").Parse(welcomeEmailTemplate))
  57. var tpl bytes.Buffer
  58. err := tmpl.Execute(&tpl, data)
  59. if err != nil {
  60. return err
  61. }
  62. body := tpl.String()
  63. return smtp.SendMail(m.serverAddr, *m.auth, m.from, []string{to}, []byte(body))
  64. }