For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /fr/docs/web/email.md (or send Accept: text/markdown).
E-mail et envoi
Templates transactionnels, outillage de prévisualisation et adaptateurs fournisseur.
Lisez votre premier message local, puis activez la livraison
Le courrier électronique transactionnel désigne un message déclenché par une action d'application, telle qu'un code de connexion ou le résultat d'une tâche. Avec le serveur Web en cours d'exécution, conservez EMAIL_PROVIDER=local dans apps/web/.env.local. Terminez la configuration de la base de données, demandez un code de connexion dans /auth, puis ouvrez /mail-preview et inspectez le dernier message. Un message local apparaissant ici n'est pas un e-mail envoyé dans votre boîte de réception externe.
Pour envoyer de vrais messages, choisissez un fournisseur de messagerie, créez son compte, vérifiez un domaine que vous contrôlez et suivez son guide dédié. Mettez la clé API nommée et l'adresse de l'expéditeur dans apps/web/.env.local, enregistrez et redémarrez le serveur Web. Demandez un nouveau code de connexion, puis vérifiez à la fois le journal de livraison du fournisseur et la boîte de réception de destination, y compris le spam. La vérification du domaine et l'approbation de l'expéditeur peuvent prendre du temps.
Si le message échoue, inspectez l’erreur de livraison et la vérification de l’expéditeur avant de demander à plusieurs reprises. La route /mail-preview est réservée au développement et renvoie 404 en production. Séparez les activités marketing de cet expéditeur transactionnel afin qu'une campagne de newsletter ne puisse pas perturber le courrier de vérification du compte.
Séparer les envois transactionnels
Le module d’e-mail gère les messages transactionnels du produit, notamment l’authentification et la fin d’une tâche. Les campagnes de prospection relèvent du workflow propre au produit consommateur et doivent rester séparées du parcours transactionnel.
Configurer l’adaptateur d’envoi
Utilisez l’adaptateur local pour des tests déterministes. Configurez l’adaptateur de production choisi et ses identifiants serveur avant d’activer les envois externes. Ne placez jamais les secrets du fournisseur de messagerie dans la configuration du client ou dans les journaux.
Enregistrer séparément l’envoi
Un résultat généré et son e-mail de fin ont des résultats distincts. Examinez les enregistrements d’envoi avant d’affirmer qu’un message a été livré. Testez un échec d’envoi sans le confondre avec un échec de génération et sans soumettre de nouveau le même travail de modèle.
Configuration et paramètres
EMAIL_PROVIDER=local garde la livraison déterministe pendant le développement. Pour la livraison en production, choisissez l'un des adaptateurs configurés — Resend (RESEND_API_KEY), AWS SES (AWS_REGION plus les clés d'accès), Postmark, SendGrid, Mailgun, un SMTP générique ou Brevo — et vérifiez que EMAIL_FROM correspond à une identité d'expéditeur acceptée par le fournisseur.
Tous les templates vivent dans src/transactional-mail-templates.ts. La route /mail-preview, réservée au développement, rend chaque template pour que les changements se relisent visuellement plutôt qu'en envoyant du courrier.
EMAIL_PROVIDER=resend
EMAIL_FROM=Your Product <[email protected]>Processus d’implémentation
Codes d'authentification, magic links, invitations, avis de facturation et mails de fin de tâche passent tous par le même expéditeur transactionnel avec le texte de la locale résolue. Les campagnes outreach sont une préoccupation produit séparée et ne partagent jamais ce chemin.
Prévisualisez un template dans mail-preview avant d'éditer le texte ou la mise en page ; gardez les valeurs de marque (nom, couleurs, tuiles du logo) venant de la configuration pour que les produits dérivés restylent sans forker les templates.
Vérification et dépannage
Assertionnez sur les messages enregistrés de l'adaptateur local dans les tests — destinataire, sujet et corps rendu. Un envoi en échec doit remonter comme un résultat de livraison, pas comme un workflow planté. Utilisez le chemin smoke opt-in avec REAL_SMOKE_EMAIL_ALLOWED_DOMAIN pour la livraison réelle.