← Retour à la marketplace
📧

Emails Transactionnels

Envoi d'emails avec templates HTML, variables dynamiques et historique.

CommunicationSimple~3 joursv1.1.0

Module d'emails transactionnels avec templates HTML réutilisables, variables dynamiques, historique des envois, gestion des rebonds et intégration SMTP ou Resend/SendGrid.

emailsmtptemplatestransactionalresend

📋 Schéma Prisma

// === Module Emails ===

enum EmailStatus {
  PENDING
  SENT
  FAILED
  BOUNCED
}

model EmailTemplate {
  id        String   @id @default(cuid())
  slug      String   @unique
  name      String
  subject   String
  htmlBody  String
  variables String[] // ex: ["name", "link"]
  isActive  Boolean  @default(true)
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt

  @@map("email_templates")
}

model EmailLog {
  id         String      @id @default(cuid())
  templateId String?
  toEmail    String
  subject    String
  status     EmailStatus @default(PENDING)
  error      String?
  sentAt     DateTime?
  createdAt  DateTime    @default(now())

  @@map("email_logs")
}

🔌 Endpoints API

## API Emails

GET  /api/email-templates            # Liste des templates
POST /api/email-templates            # Créer
PUT  /api/email-templates/:slug      # Modifier
POST /api/email-templates/:slug/test # Envoyer un email de test

GET  /api/email-logs                 # Historique des envois
# Service interne : import { sendEmail } from "@/lib/email/service"

🛠️ Guide d'implémentation

## Implémentation Emails

### Dépendances (choisir un)
```bash
npm install resend                    # Recommandé (simple, moderne)
# ou
npm install nodemailer @types/nodemailer  # SMTP classique
```

### Étape 1 — Service email
Créer src/lib/email/service.ts :
```typescript
async function sendEmail({ to, templateSlug, variables }: SendEmailParams)
```
- Charger le template depuis la DB
- Remplacer les variables (handlebars-style)
- Envoyer via Resend/SMTP
- Logger dans EmailLog

### Étape 2 — Templates de base
Créer les templates : welcome, reset-password, notification, invoice

### Variables d'environnement
```
EMAIL_FROM=noreply@monapp.fr
RESEND_API_KEY=re_xxx  # ou SMTP_HOST/PORT/USER/PASS
```

Prêt à installer ce module ?

Ajoutez-le à un projet existant depuis la page modules du projet.

Voir les projets →