package mailer import ( "bytes" "fmt" "html/template" "log" "github.com/wneessen/go-mail" "git.linuxforward.com/byom/byom-onboard/internal/platform/config" ) const welcomeEmailTemplate = ` Bienvenue sur Byom!

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}}

` type Mailer struct { client *mail.Client from string } type EmailData struct { Username string Password string Subdomains []string WebAppURL string SetupGuide string } func NewMailer(config *config.MailerConfig) *Mailer { log.Printf("Test mail successfully delivered.") fmt.Println(config) client, err := mail.NewClient(config.Host, mail.WithSMTPAuth(mail.SMTPAuthPlain), mail.WithTLSPortPolicy(mail.DefaultTLSPolicy), mail.WithUsername(config.Username), mail.WithPassword(config.Password), ) if err != nil { log.Fatalf("Failed to create mail client: %v", err) } return &Mailer{ client: client, from: config.From, } } 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() message := mail.NewMsg() message.From(m.from) message.To(to) message.Subject("Bienvenue sur BYOM!") message.SetBodyString(mail.TypeTextHTML, body) message.ReplyTo(m.from) return m.client.DialAndSend(message) } func (m *Mailer) SendVerifyEmail(to, token string) error { message := mail.NewMsg() message.From(m.from) message.To(to) message.Subject("Vérification de votre adresse email") message.SetBodyString(mail.TypeTextHTML, "Cliquez sur le lien suivant pour vérifier votre adresse email: http://localhost:8080/verify-email?token="+token) message.ReplyTo(m.from) return m.client.DialAndSend(message) }