macos shortcuts 无法直接解析邮件内容,需通过 applescript 提取原始数据、shortcuts 进行文本处理、shell/python 执行深度解析来实现本地自动化。

macOS Shortcuts 本身不能直接解析邮件正文或附件内容(如提取关键词、识别发票金额、提取联系人等),因为它缺乏对 Apple Mail 内部结构的原生读取能力。但你可以通过组合系统级工具,构建一个可行、稳定、无需第三方服务的自动化工作流来实现“解析邮件内容”这一目标。
核心路径:Mail → AppleScript 提取 → Shortcuts 处理 → 输出
Shortcuts 是调度中枢,真正承担“解析”任务的是 AppleScript(调用 Mail.app 的脚本接口)和可选的 Shell 工具(如 grep、sed、python)。整个链条必须明确分工:
- AppleScript 负责“取”:安全、合规地从当前选中邮件或收件箱中获取发件人、主题、正文(纯文本或 HTML)、附件路径等原始数据;
- Shortcuts 负责“转”与“分”:接收 AppleScript 返回的文本/文件路径,做字符串处理(正则匹配、分割、替换)、保存为文件、触发后续动作(如存入 Notes、发 Slack、调用 Python 脚本);
-
Shell 或 Python(可选)负责“深析”:当需要 NLP、表格识别、JSON 解析等复杂逻辑时,用 Shortcuts 的“运行 Shell 脚本”调用本地 Python(如使用
email、beautifulsoup4或pdfplumber)完成。
具体操作步骤(以提取邮件正文中的订单号为例)
假设你收到一封含类似“订单号:ORD-2026-7890”的邮件,希望一键提取并复制到剪贴板:
- 在「快捷指令」App 中新建指令,命名为「提取当前邮件订单号」;
- 添加操作「运行 AppleScript」,粘贴以下脚本(它会返回选中邮件的纯文本正文):
tell application "Mail"<br> set selectedMessages to selection<br> if (count of selectedMessages) is 0 then error "请先选中一封邮件"<br> set thisMessage to item 1 of selectedMessages<br> set theContent to content of thisMessage<br> return theContent<br>end tell
- 添加「提取匹配项」操作,正则表达式填
订单号:([A-Z]+-\d{4}-\d{4}),勾选“仅返回第一匹配项”; - 添加「复制到剪贴板」;
- 保存后,可在 Mail 中选中邮件 → 右键 →「快速操作」→「提取当前邮件订单号」运行(需提前在系统设置中开启该快捷指令的访达权限)。
进阶:带附件的解析(如自动提取 PDF 发票金额)
若邮件附带 PDF 发票,想提取其中的总金额:
- AppleScript 先保存附件到临时位置,并返回文件路径;
- Shortcuts 用「运行 Shell 脚本」调用
pdfplumber(需提前pip3 install pdfplumber):#!/bin/bash<br>pdf_file="$1"<br>python3 -c "import pdfplumber; f=pdfplumber.open('$pdf_file'); text=''.join([p.extract_text() or '' for p in f.pages]); print([l for l in text.split('\n') if '总计' in l or 'Amount' in l][0] if [l for l in text.split('\n') if '总计' in l or 'Amount' in l] else '未找到金额')" - 将上一步 AppleScript 输出的附件路径传给 Shell 脚本(Shortcuts 支持变量传递);
- 结果再经「剪贴板」或「显示通知」输出。
注意事项与避坑点
- AppleScript 必须在 Mail 处于前台且有邮件被选中时才能可靠执行;后台静默读取收件箱需额外授权(“辅助功能”+“全盘访问”)且稳定性较低;
- HTML 邮件正文可能含大量标签,建议在 AppleScript 中用
text content of thisMessage获取纯文本,或用source of thisMessage获取原始源码再由 Shell 清洗; - 涉及附件操作时,务必检查文件扩展名与 MIME 类型,避免误处理非目标文件;
- 首次运行含 AppleScript 的快捷指令,系统会弹出权限提示,需手动允许“邮件”被控制;
- 不建议用 Shortcuts 直接调用 JXA(JavaScript for Automation),因 macOS 14+ 已逐步弃用,AppleScript 更稳定。
这套方案不依赖网络 API,所有处理在本地完成,符合隐私与安全要求。只要逻辑清晰、权限到位、脚本健壮,就能把“解析邮件内容”变成每天点一下就完成的事。











