Gmail邮件自动归档与附件存储n8n工作流 - Gmail API与PostgreSQL集成
n8n工作流,Gmail自动归档,PostgreSQL存储,S3附件存储,邮件处理自动化,数据同步,API集成

## 系统概述

**自动化Gmail邮件处理系统**

这个工作流自动捕获、处理和存储Gmail邮件到PostgreSQL数据库,包括处理上传到S3/MinIO存储的文件附件。

**主要功能:**
– 自动邮件捕获(单个和批量)
– Gmail API格式 → PostgreSQL转换
– 文件附件处理
– 组织化数据库存储
– S3/MinIO附件备份

**集成技术:**
– Gmail API(读取+附件)
– PostgreSQL(结构化数据)
– S3/MinIO(文件)
– n8n(编排)

**结果:** 完整且可搜索的业务通信存档,附件组织有序并备份。

## 设置要求

**所需凭证:**
– Gmail OAuth2(读取+附件权限)
– PostgreSQL(写入权限)
– S3/MinIO(文件上传)

**Gmail OAuth2设置:**
1. 前往Google Cloud Console
2. 创建新项目或选择现有项目
3. 启用Gmail API
4. 创建OAuth2凭证
5. 添加授权重定向URI
6. 配置范围:gmail.readonly
7. 在n8n凭证中连接

**PostgreSQL设置:**
1. 创建数据库
2. 运行提供的SQL模式
3. 创建具有INSERT/UPDATE权限的用户
4. 在n8n中配置连接

## 系统触发器

**Gmail触发器:** 每10分钟检测新邮件
**计划触发器:** 每分钟执行批量邮件处理

**要求:**
– 配置Gmail OAuth2凭证
– Gmail读取权限
– downloadAttachments: true

## 邮件检索

**配置的Gmail节点:**

**获取单个消息:**
– 获取完整的单个邮件及其所有元数据
– 由Gmail触发器触发
– 包含完整头部和结构化数据

**获取多个已发送邮件:**
– 搜索过去一小时的已发送邮件
– 查询:”in:sent newer_than:1h”
– 由计划触发器每分钟触发

**获取多个收件箱邮件:**
– 搜索过去一小时的接收邮件
– 查询:”in:inbox newer_than:1h”
– 由计划触发器每分钟触发

## 附件处理

**二进制数据过滤器:** 仅处理带有二进制数据的邮件
– 验证多个源节点
– 条件:item.binary存在

**提取二进制元数据:** 提取元数据
**拆分附件:** 分离每个单独的附件

**处理流程:**
1. 过滤带有附件的邮件
2. 提取文件元数据(名称、类型、大小)
3. 拆分为单独项目
4. 上传到S3/MinIO
5. 创建附件记录

## 数据映射

**合并附件:** 将附件与邮件链接
– 关键字段:originalJson.id ↔ id

**上传到存储:** 上传到S3/MinIO
– 存储桶:gmail-attachments
– 路径:/user/{messageId}/{fileName}

**结构化字段:** 准备附件数据
**聚合:** 按邮件分组
– 字段:adjunto(所有附件)

**最终合并:** 组合邮件+聚合附件

## 数据转换

**邮件到PostgreSQL脚本:** 将Gmail格式转换为PostgreSQL
– 标准化发件人/收件人
– 从HTML提取纯文本
– 字段:is_read、is_outgoing等

**链接邮件附件脚本:** 映射附件
– 通过messageId ↔ message_id链接
– 将所需字段转换为JSON

**处理流程:**
1. 分离输入数据:附件 vs 邮件
2. 为每个邮件通过messageId查找其附件
3. 处理附件并转换为JSON字符串
4. 组合邮件+相关附件
5. 为PostgreSQL转换字段为JSON

**关键关系:** attachment.messageId ↔ email.message_id

**最终输出:** 带有映射附件的完整邮件

## 数据库存储

**处理项目循环:** 逐个处理
**插入或更新:** UPSERT到PostgreSQL
– 表:messages
– 键:message_id
– JSONB字段:sender、recipients、labels

**性能说明:**
– 循环处理防止大型批处理超时
– UPSERT防止重复条目
– 建议在message_id和timestamp上建立索引

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。