免费开始

· 阅读约 11 分钟

通过 API 自动化报告归档与邮件发送

端到端流程:原始数据 → PDF → 云端文件夹 → 邮件附件,仅用 REST(generate-document、folders、send-document)。

在企业应用与 SaaS 平台中,生成 PDF 文档只是拼图的第一块。 一旦报表、发票或送货单准备就绪,就会触发一连串必要操作:文件必须安全保存到有组织的文件夹结构中, 必须可供日后下载,并且常常需要立即通过邮件发送给客户或行政部门。

从零实现整套工作流意味着要编写代码来:

  • 对接图形库以渲染 PDF。
  • 配置并管理存储(本地或 AWS S3 存储桶),处理权限与路径。
  • 配置 SMTP 服务器、管理发送队列,并确保带大附件的邮件不会落入垃圾箱。

在本指南中,我们将说明如何通过 API 自动归档并通过邮件发送报表: 把整个流程压缩为一系列 Web API REST 调用——生成、有序归档与发送—— 无需在管理系统中维护本地存储或专用 SMTP。

流程架构:生成 → 归档 → 发送

不必用独立线程处理文件与 SMTP 来加重软件后端负担,现代微服务方案使用按序协作的专用 API 端点。

流程:JSON、generate-document、文件夹归档、邮件
自动化工作流:JSON 数据 → 云文件夹中的 PDF → 带附件的邮件。
[JSON 数据] │ ├─► 1. v1-folders/create (可选:创建 / 复用文件夹) │ ├─► 2. v1-jobs/generate-document (+ folderId) → PDF 已归档 │ │ │ └─ documentId │ └─► 3. v1-jobs/send-document (documentId + to[]) → 发送邮件给用户

三个关键步骤:

  • generate-document接收应用 JSON 数据,注入预配置的图形模板并生成 PDF。
  • folders在门户上将文件组织到逻辑目录树中 (例如:客户报表 / 2026 年 7 月)。在 generate-document 中传入 folderId
  • send-document使用刚创建的 documentId, 发送带附件的邮件(API key 上的 SMTP 或平台默认)。

实战指南:用 Node.js 实现工作流

下面把这套自动化落到代码里。目标:生成月度活动报表,归档到客户文件夹,并通过邮件发送。 文档: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 {
    // 阶段 0(可选):创建期间文件夹
    const folderRes = await axios.post(
      `${API_BASE}/v1-folders/create`,
      { name: 'Clienti — Luglio 2026' },
      { headers }
    );
    const folderId = folderRes.data.folderId;

    // 阶段 1:生成 PDF 并归档到文件夹
    console.log('1. 正在生成 PDF...');
    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 已归档。documentId: ${documentId}`);
    console.log(`→ 下载:${downloadUrl}`);

    // 阶段 2:发送带附件的邮件
    console.log('2. 正在通过邮件发送 PDF...');
    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('→ 邮件发送成功!');
  } catch (error) {
    console.error(
      '工作流出错:',
      error.response ? error.response.data : error.message
    );
  }
}

eseguiAutomazioneReport();

等效 cURL(generate + send)

# 1) 创建文件夹(从响应中保存 folderId)
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) 生成并归档
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) 发送邮件
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"}'

为何要取消本地存储与专用 SMTP 服务器?

把该流程迁移到专用 API 基础设施,可为软件公司带来三项立即可用的优势:

  • 零磁盘空间问题(解耦存储):PDF 不驻留在应用服务器上。 无需担心磁盘满或专门备份:文件留在云端,可通过 GET api/v1-documents/download&uid={documentId} 下载。
  • 邮件送达率:配置带 SPF、DKIM 与 DMARC 的 SMTP 很复杂。 使用 send-document 即可采用平台 SMTP 或 API key 上配置的 SMTP (门户 → Email/SMTP),无需在管理系统中自建邮件组件。
  • 完整可追溯性:凭借唯一的 documentId,可重新获取、重发或下载文件, 而无需重新处理原始数据。

结语

文档流程自动化不应等同于沉重代码与复杂基础设施。 隔离业务逻辑,把图形排版、存储与邮件路由交给 API, 可使 SaaS 应用更精简、更快、更易扩展——正适合你在寻找如何 通过 API 生成并发送报表将 PDF 保存到云文件夹时使用。

想自动化应用中的报表吗? QuartzAPI 旨在简化软件公司的工作。通过公开 Beta,你可配置云模板与文件夹, 并无初始成本地测试完整的生成与发送 API 流程。

👉 注册 QuartzAPI Beta 并自动化你的 PDF

即用代码片段

  • v1-folders/create · v1-folders/index(也可使用 tree=1
  • v1-jobs/generate-document 配合 folderId
  • v1-jobs/send-document · v1-documents/download
  • 参考:Web API 文档