我尝试用 regex 解析电子邮件。结果正如你想的那样。

发布: (2026年3月2日 GMT+8 23:24)
4 分钟阅读
原文: Dev.to

Source: Dev.to

介绍

最近我需要自动处理收到的邮件

想法听起来很简单:

邮件到达 → 提取一些字段 → 触发 webhook

比如:

  • 订单确认
  • 发票邮件
  • 发货通知
  • 支持信息

看似没有什么复杂的。至少我当时是这么想的。

尝试 #1 — 正则表达式

和大多数开发者一样,我先用了正则。

const price = email.match(/Total:\s\$(\d+)/)

第一封邮件时它工作得很完美。随后下一封邮件出现了:

Amount paid: $29

还有一封写成:

Total price: USD 29

随后又收到一封带有嵌套表格、内联样式的 HTML 邮件,格式看起来像 2004 年的 Outlook 模板

此时我的正则慢慢演变成了这样:

/(Total|Amount|Price).*?(\$|USD)?\s?(\d+(\.\d+)?)/ 

这通常是你意识到这种方法已经注定要失败的时刻。

尝试 #2 — 解析 HTML

好吧,那就解析 HTML 吧。

const dom = new JSDOM(emailHtml)

有时能工作。但邮件的 HTML 是一种特殊的混乱:

  • 表格里套表格
  • 到处都是内联样式
  • 每个发件人的布局都不同

于是你不得不为每种邮件格式维护自定义解析器

真正的问题

邮件并不是结构化数据。它们是为人类编写的,而不是机器。每个发件人都有不同的格式,试图强行使用僵硬的解析规则会非常脆弱。

显而易见的解决方案(事后看来)

与其强行制定严格的解析规则,不如让 AI 解释邮件 并提取你想要的字段?

示例邮件:

Subject: Order confirmation
Customer: John Smith
Product: T-shirt
Total: $39

结构化输出:

{
  "customer": "John Smith",
  "product": "T-shirt",
  "total": 39
}

现在你的后端收到的是干净的结构化数据,而不是原始邮件文本。

所以我构建了一个小工具

主要是因为我一次又一次地遇到这个问题。它叫 ParseForce

流程很简单:

Incoming email → AI parsing → structured JSON → webhook

你可以:

  • 获得一个唯一的收件箱
  • 将邮件发送到该收件箱
  • 定义你想要的模式

在你的 webhook 中接收结构化的 JSON。就这么简单。

它适用的场景

到目前为止,我已经用它来:

  • 解析订单确认邮件
  • 提取发票数据
  • 处理潜在客户邮件
  • 触发自动化工作流

基本上任何邮件中包含你希望系统理解的数据的情况都适用。

如果你感兴趣

你可以在这里查看 👉 https://parseforce.io

我也很好奇其他人是怎么处理这个问题的。你是使用正则、模板,还是完全其他的方案?

标签: node, webdev, saas, automation, ai

0 浏览
Back to Blog

相关文章

阅读更多 »

‘skill-check’ JS 测验

问题 1:类型强制转换 以下代码在控制台会输出什么? javascript console.log0 == '0'; console.log0 === '0'; 答案:true,然后 false Ex...