Checkpoint: Implémentation complète du remplacement automatique des variables dans les emails et ajout d'un bouton d'aperçu. Les variables {{nomApprenant}}, {{prenomApprenant}}, {{nomFormation}}, {{nomSequence}}, {{dateDebut}}, {{dateFin}}, {{lieu}}, {{formateur}} sont automatiquement remplacées lors de l'envoi d'emails. Un bouton "Aperçu email" permet de visualiser le rendu final avec des données d'exemple avant l'envoi.

This commit is contained in:
Manus Sandbox
2025-11-23 16:14:53 -05:00
parent 4e825dbf99
commit 33161d1a4d
5 changed files with 206 additions and 9 deletions

View File

@@ -6,6 +6,7 @@
import { generateFormationICS } from "./icsGenerator";
import { sendEmail as sendEmailViaService, isEmailServiceConfigured } from "./_core/emailSender";
import { generateEmailFromTemplate } from "./emailTemplateGenerator";
import { EmailVariables } from "./emailTemplateUtils";
interface EmailParams {
to: string;
@@ -29,8 +30,12 @@ async function sendEmail(params: EmailParams): Promise<boolean> {
/**
* Template HTML de base pour les emails (avec template personnalisé)
*/
async function getEmailTemplate(content: string, templateType: string = 'inscription'): Promise<string> {
return await generateEmailFromTemplate(templateType, content);
async function getEmailTemplate(
content: string,
templateType: string = 'inscription',
variables?: EmailVariables
): Promise<string> {
return await generateEmailFromTemplate(templateType, content, variables);
}
/**
@@ -117,12 +122,23 @@ export async function sendInscriptionConfirmation(params: {
contentType: 'text/calendar',
})) : undefined;
// Préparer les variables pour le remplacement
const variables: EmailVariables = {
nomApprenant: params.apprenantNom,
prenomApprenant: params.apprenantPrenom,
nomFormation: params.formationNom,
nomSequence: params.sequenceNom,
dateDebut: params.dates[0]?.dateDebut.toLocaleDateString('fr-FR') || '',
dateFin: params.dates[params.dates.length - 1]?.dateFin.toLocaleDateString('fr-FR') || '',
lieu: params.lieu,
};
return sendEmail({
to: params.apprenantEmail,
subject: isConfirmed
? `Confirmation d'inscription - ${params.formationNom}`
: `Liste d'attente - ${params.formationNom}`,
html: await getEmailTemplate(content, 'inscription'),
html: await getEmailTemplate(content, 'inscription', variables),
attachments,
});
}