Checkpoint: Modification de l'envoi d'attestation pour joindre le PDF directement en pièce jointe :
- Modification de la fonction sendAttestationEmail dans server/emailService.ts - Le PDF est maintenant téléchargé depuis l'URL et converti en Buffer - Le PDF est joint à l'email en pièce jointe (base64) au lieu d'un lien de téléchargement - Nom du fichier joint : Attestation_Nom_Prenom.pdf - Texte de l'email adapté : "Vous trouverez votre attestation en pièce jointe de cet email" - Déployé sur le VPS de production (https://formations.itinova.org) - Les attestations sont maintenant envoyées directement en pièce jointe
This commit is contained in:
@@ -1135,13 +1135,7 @@ export async function sendAttestationEmail(params: {
|
|||||||
<h3>${params.formationNom}</h3>
|
<h3>${params.formationNom}</h3>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>Vous pouvez télécharger votre attestation en cliquant sur le lien ci-dessous :</p>
|
<p>Vous trouverez votre attestation en pièce jointe de cet email.</p>
|
||||||
|
|
||||||
<div style="text-align: center; margin: 30px 0;">
|
|
||||||
<a href="${params.pdfUrl}" style="display: inline-block; padding: 12px 30px; background-color: #3b82f6; color: white; text-decoration: none; border-radius: 5px; font-weight: bold;">
|
|
||||||
📄 Télécharger mon attestation
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p>Cette attestation certifie votre participation à la formation et peut être utilisée pour votre dossier professionnel.</p>
|
<p>Cette attestation certifie votre participation à la formation et peut être utilisée pour votre dossier professionnel.</p>
|
||||||
|
|
||||||
@@ -1150,10 +1144,29 @@ export async function sendAttestationEmail(params: {
|
|||||||
<p>Cordialement,<br/>L'équipe Formation</p>
|
<p>Cordialement,<br/>L'équipe Formation</p>
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
// Télécharger le PDF depuis l'URL
|
||||||
|
let pdfBuffer: Buffer;
|
||||||
|
try {
|
||||||
|
const response = await fetch(params.pdfUrl);
|
||||||
|
if (!response.ok) {
|
||||||
|
throw new Error(`Failed to download PDF: ${response.statusText}`);
|
||||||
|
}
|
||||||
|
const arrayBuffer = await response.arrayBuffer();
|
||||||
|
pdfBuffer = Buffer.from(arrayBuffer);
|
||||||
|
} catch (error) {
|
||||||
|
console.error('[sendAttestationEmail] Error downloading PDF:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
return sendEmail({
|
return sendEmail({
|
||||||
to: params.to,
|
to: params.to,
|
||||||
subject: `Votre attestation de formation - ${params.formationNom}`,
|
subject: `Votre attestation de formation - ${params.formationNom}`,
|
||||||
html: await getEmailTemplate(content, 'attestation'),
|
html: await getEmailTemplate(content, 'attestation'),
|
||||||
|
attachments: [{
|
||||||
|
filename: `Attestation_${params.apprenantNom}_${params.apprenantPrenom}.pdf`,
|
||||||
|
content: pdfBuffer.toString('base64'),
|
||||||
|
contentType: 'application/pdf',
|
||||||
|
}],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
1
todo.md
1
todo.md
@@ -860,3 +860,4 @@
|
|||||||
- [x] Corriger l'erreur SQL "Failed query: insert into attestations" lors de l'upload d'attestation manuelle (ajout de apprenantId et sequenceId)
|
- [x] Corriger l'erreur SQL "Failed query: insert into attestations" lors de l'upload d'attestation manuelle (ajout de apprenantId et sequenceId)
|
||||||
- [x] Corriger l'erreur "refetchInscrits is not defined" lors de l'upload d'attestation manuelle (remplacement par refetchApprenants)
|
- [x] Corriger l'erreur "refetchInscrits is not defined" lors de l'upload d'attestation manuelle (remplacement par refetchApprenants)
|
||||||
- [x] Corriger l'erreur "aucune attestation disponible pour cet apprenant" lors de l'envoi manuel d'une attestation uploadée (vérification de documentUrl ou urlPdf)
|
- [x] Corriger l'erreur "aucune attestation disponible pour cet apprenant" lors de l'envoi manuel d'une attestation uploadée (vérification de documentUrl ou urlPdf)
|
||||||
|
- [x] Modifier l'envoi d'attestation pour joindre le PDF directement en pièce jointe au lieu d'un lien de téléchargement
|
||||||
|
|||||||
Reference in New Issue
Block a user