· 11 min de lecture

Automatiser archivage et envoi e-mail de rapports via API

Workflow complet : données brutes → PDF → dossier cloud → e-mail en pièce jointe, avec des appels REST uniquement.

Dans les applications enterprise et les plateformes SaaS, la génération d’un document PDF n’est que la première pièce du puzzle. Une fois le rapport, la facture ou le bon de livraison prêts, une chaîne d’actions obligatoires s’enclenche : le fichier doit être sauvegardé de façon sécurisée dans une structure de dossiers organisée, rendu accessible pour un téléchargement futur et, souvent, envoyé immédiatement par e-mail au client ou au service administratif.

Implémenter ce workflow complet depuis zéro signifie écrire du code pour :

  • S’interfacer avec des bibliothèques graphiques pour le rendu PDF.
  • Configurer et gérer un stockage (local ou bucket AWS S3) en gérant permissions et chemins.
  • Configurer des serveurs SMTP, gérer les files d’envoi et s’assurer que les e-mails avec pièces jointes lourdes ne finissent pas en spam.

Dans ce guide, nous verrons comment automatiser l’archivage et l’envoi e-mail de rapports via API : réduire l’ensemble du processus à une séquence d’appels Web API REST — génération, archivage organisé et expédition — sans stockage local ni SMTP dédié sur votre logiciel de gestion.

L’architecture du flux : générer → archiver → envoyer

Au lieu de surcharger le backend de votre logiciel avec des threads séparés pour les fichiers et le SMTP, l’approche microservices moderne utilise des endpoints API spécialisés qui travaillent en séquence.

Flux : JSON, generate-document, archive dossiers, e-mail
Workflow automatisé : données JSON → PDF dans un dossier cloud → e-mail avec pièce jointe.
[Données JSON] │ ├─► 1. v1-folders/create (optionnel : créer / réutiliser le dossier) │ ├─► 2. v1-jobs/generate-document (+ folderId) → PDF archivé │ │ │ └─ documentId │ └─► 3. v1-jobs/send-document (documentId + to[]) → E-mail à l'utilisateur

Les trois étapes clés :

  • generate-document : prend les données applicatives en JSON, les injecte dans le template graphique préconfiguré et produit le PDF.
  • folders : organise le fichier dans une arborescence logique sur le portail (ex. Rapports clients / Juillet 2026). Vous passez folderId à generate-document.
  • send-document : prend le documentId venant d’être créé et envoie l’e-mail avec pièce jointe (SMTP sur la clé API ou défaut plateforme).

Guide pratique : implémentation du workflow en Node.js

Voyons comment traduire cette automatisation en code. Objectif : générer un rapport mensuel d’activité, l’archiver dans le dossier du client et le lui envoyer par e-mail. Documentation : Web API.

const axios = require('axios');

const API_BASE = 'https://backend.quartzapi.com/index.php?r=api';
const API_KEY = 'TUO_API_KEY_SEGRETA';

const headers = {
  Authorization: `Bearer ${API_KEY}`,
  'Content-Type': 'application/json'
};

async function eseguiAutomazioneReport() {
  try {
    // PHASE 0 (optionnelle) : créer le dossier de la période
    const folderRes = await axios.post(
      `${API_BASE}/v1-folders/create`,
      { name: 'Clienti — Luglio 2026' },
      { headers }
    );
    const folderId = folderRes.data.folderId;

    // PHASE 1 : génération PDF + archivage dans le dossier
    console.log('1. Génération du PDF en cours...');
    const genResponse = await axios.post(
      `${API_BASE}/v1-jobs/generate-document`,
      {
        templateCode: 'REPORT_ATTIVITA',
        folderId,
        externalId: 'RPT-TECH-2026-07',
        outputFormat: 'pdf',
        data: {
          cliente: 'Tech Solutions S.r.l.',
          mese: 'Luglio 2026',
          ore_totali: 45,
          dettaglio_attivita: [
            {
              data: '05/07/2026',
              descrizione: 'Refactoring database e indici SQL',
              ore: 5
            },
            {
              data: '12/07/2026',
              descrizione: 'Sviluppo nuove API di integrazione',
              ore: 40
            }
          ]
        }
      },
      { headers }
    );

    const documentId = genResponse.data.result.documentId;
    const downloadUrl = genResponse.data.result.downloadUrl;
    console.log(`→ PDF archivé. documentId: ${documentId}`);
    console.log(`→ Download: ${downloadUrl}`);

    // PHASE 2 : envoi e-mail avec pièce jointe
    console.log('2. Envoi du PDF par e-mail...');
    await axios.post(
      `${API_BASE}/v1-jobs/send-document`,
      {
        documentId,
        to: ['amministrazione@clientetech.it'],
        subject: 'Report Attività Mensile - Luglio 2026',
        body:
          'Gentile cliente, in allegato trova il report delle attività di Luglio 2026.'
      },
      { headers }
    );

    console.log('→ E-mail envoyé avec succès !');
  } catch (error) {
    console.error(
      'Erreur dans le workflow :',
      error.response ? error.response.data : error.message
    );
  }
}

eseguiAutomazioneReport();

Équivalent cURL (generate + send)

# 1) Créer le dossier (enregistrer folderId depuis la réponse)
curl -X POST "https://backend.quartzapi.com/index.php?r=api/v1-folders/create" \
  -H "Authorization: Bearer TUO_API_KEY_SEGRETA" \
  -H "Content-Type: application/json" \
  -d '{"name":"Clienti — Luglio 2026"}'

# 2) Générer et archiver
curl -X POST "https://backend.quartzapi.com/index.php?r=api/v1-jobs/generate-document" \
  -H "Authorization: Bearer TUO_API_KEY_SEGRETA" \
  -H "Content-Type: application/json" \
  -d '{"templateCode":"REPORT_ATTIVITA","folderId":"fld_...","data":{...}}'

# 3) Envoyer l'e-mail
curl -X POST "https://backend.quartzapi.com/index.php?r=api/v1-jobs/send-document" \
  -H "Authorization: Bearer TUO_API_KEY_SEGRETA" \
  -H "Content-Type: application/json" \
  -d '{"documentId":"doc_...","to":["amministrazione@clientetech.it"],"subject":"Report Luglio 2026"}'

Pourquoi éliminer le stockage local et les serveurs SMTP dédiés ?

Déplacer ce processus vers une infrastructure API spécialisée offre trois avantages immédiats aux software houses :

  • Zéro problème d’espace disque (stockage découplé) : les PDF ne résident pas sur le serveur de votre application. Pas de disques pleins ni de sauvegardes ad hoc : ils restent dans le cloud, téléchargeables avec GET api/v1-documents/download&uid={documentId}.
  • Délivrabilité des e-mails : configurer SMTP avec SPF, DKIM et DMARC est complexe. Avec send-document vous utilisez le SMTP de la plateforme ou celui configuré sur la clé API (portail → Email/SMTP), sans mailer custom dans le logiciel de gestion.
  • Traçabilité totale : avec un documentId unique vous pouvez reprendre le fichier, le renvoyer ou le télécharger sans retraiter les données de départ.

Conclusions

L’automatisation des processus documentaires ne doit pas être synonyme de code lourd et d’infrastructures complexes. Isoler la logique métier et laisser aux API la mise en forme graphique, la sauvegarde et le routage des e-mails rend les applications SaaS plus légères, plus rapides et plus faciles à scaler — idéal si vous cherchez comment générer et envoyer des rapports via API ou sauvegarder des PDF dans un dossier cloud.

Vous voulez automatiser les rapports de votre application ? QuartzAPI est né pour simplifier la vie des software houses. Avec la beta publique vous configurez templates et dossiers cloud et testez le flux complet de génération et d’envoi via API sans coûts initiaux.

👉 Inscrivez-vous à la Beta QuartzAPI et automatisez vos PDF

Snippets prêts à l’emploi

  • v1-folders/create · v1-folders/index (aussi tree=1)
  • v1-jobs/generate-document avec folderId
  • v1-jobs/send-document · v1-documents/download
  • Référence : Documentation Web API