SuperAPI AI 工具集

imap-email

办公与效率

查看项目

更新于 10-16 06:39

技能介绍

用途

IMAP Email Reader 用于通过 IMAP 协议读取、搜索和管理电子邮件,支持 ProtonMail Bridge、Gmail IMAP 以及任何标准 IMAP 服务器。

主要能力

  • 检查邮箱中的未读/新邮件
  • 按 UID 获取完整邮件内容(含文本与 HTML 正文)
  • 按发件人、主题、时间范围、已读/未读等条件搜索邮件
  • 将邮件标记为已读或未读
  • 列出所有可用邮箱/文件夹

使用方式

快速开始

检查新邮件:

node skills/imap-email/scripts/imap.js check

获取指定邮件:

node skills/imap-email/scripts/imap.js fetch <uid>

标记为已读:

node skills/imap-email/scripts/imap.js mark-read <uid>

搜索邮箱:

node skills/imap-email/scripts/imap.js search --from "sender@example.com" --unseen

配置

在技能文件夹中创建 .env 或设置环境变量:

IMAP_HOST=127.0.0.1          # Server hostname
IMAP_PORT=1143               # Server port
IMAP_USER=your@email.com
IMAP_PASS=your_password
IMAP_TLS=false               # Use TLS/SSL connection
IMAP_REJECT_UNAUTHORIZED=false  # Set to false for self-signed certs (optional)
IMAP_MAILBOX=INBOX           # Default mailbox

ProtonMail Bridge 配置

  • 安装并运行 ProtonMail Bridge
  • IMAP 使用 127.0.0.1:1143
  • 密码由 Bridge 生成(不是 ProtonMail 账户密码)
  • TLS: 使用 false(Bridge 使用 STARTTLS)
  • REJECT_UNAUTHORIZED: 设置为 false(Bridge 使用自签名证书)

Gmail IMAP 配置

  • Host: imap.gmail.com
  • Port: 993
  • TLS: true
  • 启用 "Less secure app access" 或使用应用专用密码
  • REJECT_UNAUTHORIZED: 省略或设为 true(默认)

命令说明

check:检查邮箱中的未读/新邮件。

node scripts/imap.js check [--limit 10] [--mailbox INBOX] [--recent 2h]

选项:--limit <n> 最大结果数(默认 10);--mailbox <name> 要检查的邮箱(默认 INBOX);--recent <time> 仅显示最近 X 时间的邮件(如 30m、2h、7d)。返回 JSON 数组,包含 uid、from、subject、date、snippet、flags。

fetch:按 UID 获取完整邮件内容。

node scripts/imap.js fetch <uid> [--mailbox INBOX]

返回含完整正文(text + HTML)的 JSON。

search:带过滤条件搜索邮件。

node scripts/imap.js search [options]

选项:--unseen 仅未读;--seen 仅已读;--from <email> 发件人包含;--subject <text> 主题包含;--recent <time> 最近 X 时间;--since <date> 某日期之后(YYYY-MM-DD);--before <date> 某日期之前(YYYY-MM-DD);--limit <n> 最大结果数(默认 20);--mailbox <name> 要搜索的邮箱(默认 INBOX)。时间格式示例:30m 表示最近 30 分钟,2h 表示最近 2 小时,7d 表示最近 7 天。

mark-read / mark-unread:将一封或多封邮件标记为已读或未读。

node scripts/imap.js mark-read <uid> [uid2 uid3...]
node scripts/imap.js mark-unread <uid> [uid2 uid3...]

list-mailboxes:列出所有可用邮箱/文件夹。

node scripts/imap.js list-mailboxes

与 Cron 集成

可通过 Clawdbot cron 设置定期邮件检查:

# Check email every 15 minutes, deliver to iMessage
clawdbot cron add \
  --name "email-check" \
  --cron "*/15 * * * *" \
  --session isolated \
  --message "Check for new ProtonMail emails and summarize them" \
  --deliver \
  --channel imessage \
  --to "+15085600825"

在隔离会话中,agent 可运行:

node /Users/mike/clawd/skills/imap-email/scripts/imap.js check --limit 5

适用场景

  • 早晨邮件摘要:运行 check --limit 10 --recent 12h,汇总整夜未读邮件并发送到指定渠道
  • 检查特定发件人的近期邮件:运行 search --from "important@company.com" --recent 24h,必要时获取完整内容,处理完后标记已读
  • 每小时紧急邮件检查:运行 search --recent 1h --unseen,筛选重要关键词,提取行动项,紧急时发送通知
  • 每周摘要:运行 search --recent 7d --limit 20,汇总活动并生成周报

依赖安装

在技能文件夹中安装:

cd skills/imap-email
npm install imap-simple dotenv

或全局安装:

npm install -g imap-simple dotenv

安全说明

  • 凭据存储在 .env 中(加入 .gitignore)
  • ProtonMail Bridge 密码不是账户密码
  • ProtonMail IMAP 访问需要 Bridge 保持运行
  • Gmail 建议使用应用专用密码

限制与故障排查

连接超时:确认 IMAP 服务器正在运行且可访问,检查 host/port 配置,可用 telnet <host> <port> 测试。

认证失败:确认用户名(通常是完整邮箱地址),检查密码是否正确;ProtonMail Bridge 使用 Bridge 生成的密码而非账户密码;Gmail 在启用两步验证时使用应用专用密码。

TLS/SSL 错误:IMAP_TLS 设置需匹配服务器要求(SSL 用 true,STARTTLS 用 false);自签名证书(如 ProtonMail Bridge)需设置 IMAP_REJECT_UNAUTHORIZED=false;检查端口与 TLS 设置匹配(SSL 用 993,STARTTLS 用 143)。

结果为空:确认邮箱名称(区分大小写),检查搜索条件,可用 list-mailboxes 列出邮箱。