Token导航 LogoToken导航TokenDH.com
研究检索需要联网clawhub未标认证来源可访问clear审计提醒

mail-mate邮件伙伴

Agent Skill

mail-mate 用于查找、检索和筛选相关信息,适合在 OpenClaw 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

2,352

周安装

98

GitHub Stars

公开资料未说明

下载量

784
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:mail-mate(邮件伙伴)
来源仓库:https://github.com/tankeito/mail-mate
安装命令:
openclaw skills install mail-mate
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install mail-mate

简介

连接 IMAP 邮箱,按正则表达式和时间窗口筛选并提取邮件内容。

  • 适用于监控特定主题邮件、定时抓取通知或自动化邮件分类任务。
  • 支持自定义过滤规则和时间范围,推送匹配结果供进一步处理。
  • 需配置邮箱登录凭证;注意网络访问权限及邮件服务商的安全策略。
  • mail-mate 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

IMAP 邮件处理流水线(imap-mail-pipeline) v1.0.0

简介

通用型邮件处理流水线 Skill — "路由 → 精确时间窗 → 归一化匹配 → 结构化提取 → 推送 → 定时"六位一体:

  • 🧭 内置服务商路由provider="qq" / "gmail" / "outlook" …… 一个参数搞定 host/port,告别手抄地址。
  • ⏱️ 绝对精准时间窗start_datetime / end_datetime 下沉到代码,数学比对不漏件、不越界。
  • 🧹 极端字符串归一化:全角空格、零宽字符、换行、制表等全部剥离,【SEO順位チェック_夜間バッチ処理】 无视后续空白全文稳命中。
  • 🔍 复合检索:主题 + 正文多关键字,AND/OR 组内可选,组间 AND。
  • 🧬 正则结构化提取:正文字段→extracted_data
  • 📤 多平台推送:钉钉 / 飞书 / Telegram。
  • 一键 crontabsetup_cron.sh 幂等注册。
  • 📦 零依赖:仅 Python 3 标准库。

目录结构

imap-mail-pipeline/
├── _meta.json
├── main.py           # 调度入口
├── reader.py         # 路由/时间窗/归一化匹配/正则提取
├── pusher.py         # 钉钉/飞书/Telegram 推送
├── setup_cron.sh     # crontab 一键注册
└── skill.md          # 本文档

参数说明

参数类型必填默认说明
email_accountstring邮箱完整账号
auth_passwordstring客户端授权码(敏感)
providerstring选填""内置路由快捷方式,见下表
imap_hoststring选填""provider 未填时使用
imap_portinteger选填993端口
start_datetimestring选填end - 24h开始时间 YYYY-MM-DD HH:MM:SS
end_datetimestring选填当前时间结束时间 YYYY-MM-DD HH:MM:SS
subject_keywordsstring选填""主题关键字,英文逗号分隔
body_keywordsstring选填""正文关键字,英文逗号分隔
match_logicstring选填ANDAND / OR(组内逻辑)
extract_patternsobject选填{}正则字段提取
preview_lengthinteger选填500正文预览长度
push_platformstring选填""dingtalk / feishu / tg
webhook_urlstring选填""推送 Webhook
push_secretstring选填""加签密钥 或 TG chat_id
⚠️ 时间控制使用 start_datetime / end_datetime 精确参数,不再使用早期设计中的 time_window_hours

🧭 内置服务商路由表(provider 参数)

providerHostPort
aliyun (默认兜底)imap.qiye.aliyun.com993
aliyun_mailimap.aliyun.com993
qqimap.qq.com993
exmail / tencentimap.exmail.qq.com993
163imap.163.com993
126imap.126.com993
yeahimap.yeah.net993
sinaimap.sina.com993
sohuimap.sohu.com993
139imap.139.com993
gmailimap.gmail.com993
outlook / hotmail / office365outlook.office365.com993
yahooimap.mail.yahoo.com993
icloudimap.mail.me.com993
fastmailimap.fastmail.com993
zohoimap.zoho.com993
protonmail127.0.0.11143(需本地 Bridge)

路由优先级

provider(命中内置表) > imap_host/imap_port(自定义) > 默认 aliyun

⏱️ 精确时间窗过滤

输入格式

  • 标准:YYYY-MM-DD HH:MM:SS
  • 接受:YYYY-MM-DD(当 00:00:00 处理)、YYYY-MM-DDTHH:MM:SS、带时区的 ISO 8601(如 2026-04-21T23:00:00+08:00
  • 不含时区时:按 服务器本地时区 解析

底层流程

  1. start_datetime本地日期调用 IMAP SEARCH SINCE(粗筛,保守扩大)
  2. 对每封邮件解析 Date 头为 aware datetime
  3. 转换到与用户参数相同的本地时区
  4. 严格数学比对start_datetime ≤ 邮件真实时间 ≤ end_datetime
  5. 不满足则直接丢弃

常用写法

// 最近 24 小时(什么都不填)
{}

// 指定绝对时间窗(跨日)
{"start_datetime": "2026-04-20 23:00:00", "end_datetime": "2026-04-21 10:00:00"}

// 带时区
{"start_datetime": "2026-04-20T23:00:00+09:00"}

🧹 极端字符串归一化匹配

清洗范围

匹配前对 目标文本用户关键字 同时执行归一化,清除:

类别字符
基础空白半角空格 / \ / `\
/ \ / \f / \v`
Unicode 空白(NBSP) / \ (全角空格)/ \
 / \

零宽字符\​ ~ \‏\⁠\(BOM/ZWNBSP)
双向控制符\‪ ~ \‮(LRE/RLE/PDF/LRO/RLO)

命中示例

  • 用户传入关键字:【SEO順位チェック_夜間バッチ処理】
  • 邮件真实主题:【SEO順位チェック_夜間バッチ処理】 正常終了(中间有全角空格)
  • 清洗后:

- 关键字 → 【seo順位チェック_夜間バッチ処理】 - 主题 → 【seo順位チェック_夜間バッチ処理】正常終了 - in 判定 → ✅ 100% 命中

同理适用于正文中的换行、零宽字符干扰。


调用示例

场景 A:最简单(过去 24h + 关键字)

echo '{
  "email_account": "user@example.com",
  "auth_password": "YOUR_AUTH_CODE",
  "provider":      "qq",
  "subject_keywords": "【SEO順位チェック_夜間バッチ処理】"
}' | python3 main.py

场景 B:绝对时间窗 + 归一化匹配 + 正则提取

echo '{
  "email_account":   "user@example.com",
  "auth_password":   "YOUR_AUTH_CODE",
  "provider":        "outlook",
  "start_datetime":  "2026-04-20 23:00:00",
  "end_datetime":    "2026-04-21 10:00:00",
  "subject_keywords":"並行,SEO",
  "match_logic":     "OR",
  "extract_patterns": {
    "parallel_id": "【並行(\\d+)番目】",
    "machine":     "(本番\\d+号機)",
    "status":      "(成功|失敗|完了|エラー)"
  }
}' | python3 main.py

场景 C:自定义 host(内置表没有的服务商)

{
  "imap_host": "mail.corporate.internal",
  "imap_port": 993,
  "email_account": "user@corporate.internal",
  "auth_password": "xxx"
}

推送配置

平台push_platformwebhook_urlpush_secret
钉钉dingtalk群机器人 Webhook加签密钥(SEC...,可选)
飞书feishu群机器人 Webhook签名密钥(可选)
Telegramtghttps://api.telegram.org/bot<TOKEN>/sendMessage目标 chat_id

推送的 Markdown 消息会携带 extracted_data 字段,群里一眼可见关键信息。


定时任务配置

chmod +x setup_cron.sh

export SKILL_EMAIL_ACCOUNT=user@example.com
export SKILL_AUTH_PASSWORD=YOUR_AUTH_CODE
export SKILL_PROVIDER=qq
export SKILL_SUBJECT_KEYWORDS="【SEO順位チェック_夜間バッチ処理】"
export SKILL_EXTRACT_PATTERNS='{"status":"(成功|失敗|完了)"}'
export SKILL_PUSH_PLATFORM=dingtalk
export SKILL_WEBHOOK_URL="https://oapi.dingtalk.com/robot/send?access_token=xxx"
export SKILL_PUSH_SECRET="SECxxxxxxxx"

# 每天 09:00 自动跑;时间窗留空即为过去 24h(滑动窗口,适合定时场景)
./setup_cron.sh "0 9 * * *" /var/log/mail-pipeline.log
💡 为什么定时任务要留空时间窗参数? 留空时默认为"当前时间 - 24h"到"当前时间",每次 cron 触发都是滚动窗口,天然适配定时任务。固定的 start_datetime 反而会让每次都查同一段历史,不是你想要的。

输出示例

{
  "success": true,
  "server": "imap.qq.com:993",
  "window": {
    "from": "2026-04-20 23:00:00 +0800",
    "to":   "2026-04-21 10:00:00 +0800",
    "tz":   "CST"
  },
  "filter": "时间窗[2026-04-20 23:00:00 +0800 ~ 2026-04-21 10:00:00 +0800] AND 主题[OR:並行,SEO] AND 提取[parallel_id,machine,status]",
  "count":  2,
  "emails": [
    {
      "uid":             "10311",
      "from":            "batch@example.com",
      "timestamp":       "2026-04-21T09:32:15+08:00",
      "timestamp_local": "2026-04-21 09:32:15 +0800",
      "subject":         "【並行2番目】SEO 日次バッチ 完了通知",
      "extracted_data": {
        "parallel_id": "2",
        "machine":     "本番1号機",
        "status":      "完了"
      },
      "preview": "本番1号機にて 並行2番目 の SEO バッチが 09:31 に正常に完了しました……"
    },
    {
      "uid":             "10308",
      "from":            "batch@example.com",
      "timestamp":       "2026-04-20T23:15:02+08:00",
      "timestamp_local": "2026-04-20 23:15:02 +0800",
      "subject":         "【並行1番目】SEO 跑批 失敗通知",
      "extracted_data": {
        "parallel_id": "1",
        "machine":     "本番2号機",
        "status":      "失敗"
      },
      "preview": "本番2号機の 並行1番目 で例外が発生しました……"
    }
  ]
}

🎯 高级 Prompt 示例:机器号 × 並行号 复合状态汇总

Skill 保持通用,所有业务语义都在 Prompt 里表达:

`` 你是批处理作业监控助手。请调用 imap-mail-pipeline 完成汇总: 【调用参数】 { "email_account": "<用户邮箱>", "auth_password": "<授权码>", "provider": "qq", "start_datetime": "2026-04-20 23:00:00", "end_datetime": "2026-04-21 10:00:00", "subject_keywords":"【SEO順位チェック_夜間バッチ処理】", "extract_patterns": { "parallel_id": "【並行(\\d+)番目】", "machine": "(本番\\d+号機)", "status": "(成功|失敗|完了|エラー|異常)" } } 【分析步骤】 1. 读取每封邮件的 extracted_data。 2. 以 (machine, parallel_id) 为复合主键聚合,按 timestamp 取最新状态。 3. 构建矩阵:行=機器、列=並行号、单元格=最新 status。 4. 高亮异常:status ∈ {失敗, エラー, 異常} 用 ⚠️;成功/完了 用 ✅。 5. 时间窗内未出现的 (machine, parallel_id) 标 "—"。 【输出格式】 - Markdown 表格 - 下方列出异常项目的主题 + timestamp_local,便于快速定位 ``

为何这个 Prompt 稳定 work

痛点本 Skill 方案
跨日时间边界start_datetime / end_datetime 数学比对,零漏件
邮件标题里混入全角空格归一化后 in 必中
手抄 host 容易错provider: "qq" 一键路由
日文/正则转义复杂extract_patterns 代码层编译,Skill 吐结构化字段
业务换场景要改代码换 Prompt / 换 extract_patterns 即可,Skill 零改动

返回字段参考

字段类型说明
successboolean是否成功
serverstring实际使用的 host:port
window.from / window.tostring生效的时间窗(带时区)
window.tzstring服务器本地时区
filterstring生效过滤条件的人类可读描述
countinteger命中邮件数
emails[].uidstringIMAP 邮件 UID
emails[].fromstring发件人(解码后)
emails[].timestampstring (ISO 8601)邮件时间,aware datetime
emails[].timestamp_localstring本地时区格式化字符串
emails[].subjectstring主题(解码后)
emails[].extracted_dataobject正则提取结果;未配置为 {}
emails[].previewstring正文预览
push.pushedboolean是否推送成功

从早期版本迁移

旧参数1.0.0 对应
time_window_hours: 24不填 start_datetime / end_datetime(默认即为过去 24h)
time_window_hours: N改传具体的 start_datetime / end_datetime,或由调用方动态计算
手写 imap_host优先改用 provider(内置 20+ 主流服务商)

其余参数(关键字、正则、推送)均向前兼容。

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

74.11%
按下载量换算581

安全审计

VirusTotal

通过

ClawScan

可疑

Static analysis

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills