Inizia gratis

· 11 min di lettura

Automatizzare Archiviazione e Invio Email di Report via API

Workflow completo: dati grezzi → PDF → cartella cloud → email con allegato, con sole chiamate REST (generate-document, folders, send-document).

Nelle applicazioni enterprise e nelle piattaforme SaaS, la generazione di un documento PDF è solo il primo pezzo del puzzle. Una volta che il report, la fattura o la bolla di consegna sono pronti, si attiva una catena di azioni obbligatorie: il file deve essere salvato in modo sicuro in una struttura a cartelle organizzata, deve essere reso accessibile per il download futuro e, spesso, deve essere inviato immediatamente via email al cliente o al reparto amministrativo.

Implementare questo intero workflow da zero significa scrivere codice per:

  • Interfacciarsi con librerie grafiche per il rendering del PDF.
  • Configurare e gestire uno storage (locale o bucket AWS S3) gestendo permessi e percorsi.
  • Configurare server SMTP, gestire le code di invio e assicurarsi che le email con allegati pesanti non finiscano in spam.

In questa guida vedremo come automatizzare archiviazione e invio email di report via API: ridurre l’intero processo a una sequenza di chiamate Web API REST — generazione, archiviazione organizzata e spedizione — senza storage locale né SMTP dedicato sul tuo gestionale.

L’architettura del flusso: genera → archivia → invia

Invece di sovraccaricare il backend del tuo software con thread separati per file e SMTP, l’approccio moderno a microservizi usa endpoint API specializzati che lavorano in sequenza.

Flusso: JSON, generate-document, archivio cartelle, email
Workflow automatizzato: dati JSON → PDF in cartella cloud → email con allegato.
[Dati JSON] │ ├─► 1. v1-folders/create (opzionale: crea / riusa la cartella) │ ├─► 2. v1-jobs/generate-document (+ folderId) → PDF archiviato │ │ │ └─ documentId │ └─► 3. v1-jobs/send-document (documentId + to[]) → Email all'utente

I tre passaggi chiave:

  • generate-document: prende i dati applicativi in JSON, li inietta nel template grafico pre-configurato e produce il PDF.
  • folders: organizza il file in un’alberatura logica sul portale (es. Report clienti / Luglio 2026). Passi folderId in generate-document.
  • send-document: prende il documentId appena creato e spedisce l’email con allegato (SMTP sulla API key o default piattaforma).

Guida pratica: implementazione del workflow in Node.js

Vediamo come tradurre questa automazione in codice. Obiettivo: generare un report mensile attività, archiviarlo nella cartella del cliente e spedirglielo via email. Documentazione: 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 {
    // FASE 0 (opzionale): crea la cartella del periodo
    const folderRes = await axios.post(
      `${API_BASE}/v1-folders/create`,
      { name: 'Clienti — Luglio 2026' },
      { headers }
    );
    const folderId = folderRes.data.folderId;

    // FASE 1: generazione PDF + archiviazione nella cartella
    console.log('1. Generazione del PDF in corso...');
    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 archiviato. documentId: ${documentId}`);
    console.log(`→ Download: ${downloadUrl}`);

    // FASE 2: invio email con allegato
    console.log('2. Invio del PDF via email...');
    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('→ Email inviata con successo!');
  } catch (error) {
    console.error(
      'Errore nel workflow:',
      error.response ? error.response.data : error.message
    );
  }
}

eseguiAutomazioneReport();

Equivalente cURL (generate + send)

# 1) Crea cartella (salva folderId dalla risposta)
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) Genera e archivia
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) Invia email
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"}'

Perché eliminare lo storage locale e i server SMTP dedicati?

Spostare questo processo su un’infrastruttura API specializzata offre tre vantaggi immediati alle software house:

  • Zero problemi di spazio su disco (storage disaccoppiato): i PDF non risiedono sul server della tua applicazione. Niente dischi pieni né backup ad hoc: restano nel cloud, scaricabili con GET api/v1-documents/download&uid={documentId}.
  • Deliverability delle email: configurare SMTP con SPF, DKIM e DMARC è complesso. Con send-document usi lo SMTP della piattaforma o quello configurato sulla API key (portale → Email/SMTP), senza mailer custom nel gestionale.
  • Tracciabilità totale: con un documentId univoco puoi riprendere il file, reinviarlo o scaricarlo senza rielaborare i dati di partenza.

Conclusioni

L’automazione dei processi documentali non deve essere sinonimo di codice pesante e infrastrutture complesse. Isolare la logica di business e lasciare alle API la formattazione grafica, il salvataggio e il routing delle email rende le applicazioni SaaS più snelle, veloci e facili da scalare — ideale se cerchi come generare e inviare report via API o salvare PDF in cartella cloud.

Vuoi automatizzare i report della tua applicazione? QuartzAPI nasce per semplificare la vita delle software house. Con la beta pubblica configuri template e cartelle cloud e testi il flusso completo di generazione e invio via API senza costi iniziali.

👉 Registrati alla Beta di QuartzAPI e automatizza i tuoi PDF

Snippet pronti

  • v1-folders/create · v1-folders/index (anche tree=1)
  • v1-jobs/generate-document con folderId
  • v1-jobs/send-document · v1-documents/download
  • Riferimento: Documentazione Web API