import axios from 'axios'; import { logger } from '../logger'; const BREVO_API_KEY = process.env.BREVO_API_KEY; const BREVO_API_URL = 'https://api.brevo.com/v3/smtp/email'; export class EmailService { static async sendWelcomeEmail(to: string, name: string, organizationName: string, loginUrl: string, passwordResetUrl: string) { if (!BREVO_API_KEY) { logger.warn('[EMAIL] BREVO_API_KEY not found. Skipping email sending.'); return; } try { const response = await axios.post( BREVO_API_URL, { sender: { name: 'Xamlé Studio', email: 'contact@xamle.studio' }, to: [{ email: to, name }], subject: `Bienvenue chez Xamlé Studio - ${organizationName}`, htmlContent: `

Bienvenue, ${name} !

Votre espace pour ${organizationName} a été créé avec succès.

Vous pouvez vous connecter à votre tableau de bord en cliquant sur le bouton ci-dessous :

Accéder au Dashboard

Pour des raisons de sécurité, nous vous recommandons de configurer votre mot de passe immédiatement via ce lien :

${passwordResetUrl}

L'équipe Xamlé Studio

` }, { headers: { 'api-key': BREVO_API_KEY, 'Content-Type': 'application/json' } } ); logger.info(`[EMAIL] Welcome email sent to ${to} (Brevo ID: ${response.data.messageId})`); } catch (error: any) { logger.error(`[EMAIL] Failed to send welcome email to ${to}: ${error.response?.data?.message || error.message}`); } } static async sendInvitationEmail(to: string, invitedBy: string, organizationName: string, joinUrl: string) { if (!BREVO_API_KEY) { logger.warn('[EMAIL] BREVO_API_KEY not found. Skipping email sending.'); return; } try { await axios.post( BREVO_API_URL, { sender: { name: 'Xamlé Studio', email: 'contact@xamle.studio' }, to: [{ email: to }], subject: `${invitedBy} vous invite à rejoindre ${organizationName}`, htmlContent: `

Rejoignez votre équipe !

${invitedBy} vous a invité à collaborer sur l'espace ${organizationName}.

Cliquez ci-dessous pour activer votre compte :

Rejoindre l'équipe

L'équipe Xamlé Studio

` }, { headers: { 'api-key': BREVO_API_KEY, 'Content-Type': 'application/json' } } ); logger.info(`[EMAIL] Invitation sent to ${to}`); } catch (error: any) { logger.error(`[EMAIL] Failed to send invitation to ${to}: ${error.response?.data?.message || error.message}`); } } }