skills/feishu-cli-mail/SKILL.md
飞书邮箱(Mail)操作。查看邮件、发送邮件、回复、转发、管理草稿、批量获取、线程、过滤、邮箱签名。 当用户请求"发邮件"、"看邮件"、"查邮件"、"回复邮件"、"转发邮件"、"邮件草稿"、"收件箱"、 "邮箱签名"、"feishu mail"、"lark mail"、"未读邮件"时使用。 所有命令需要 User Access Token(先 feishu-cli auth login)。 首期限制:发送/草稿/回复支持纯文本或 HTML body;forward 当前仅支持纯文本 body。暂不支持普通附件;send 支持 CID 内联图片自动扫描。
npx skillsauth add riba2534/feishu-cli feishu-cli-mailInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
查看、发送、回复、转发邮件,管理草稿,过滤收件箱。
首期限制:
- body 类型:
send / draft-create / draft-edit / reply / reply-all支持纯文本/HTML body(有--html/--plain-text控制位);forward当前仅支持纯文本 body(无--html/--plain-textflag)。- CID 内联图片自动扫描(
--inline-images-auto-scan):仅mail send支持。draft-create / draft-edit / reply / reply-all / forward暂未支持此 flag,需要内嵌图请走mail send。- 普通附件:所有发送命令均暂不支持。
feishu-cli auth login 登录)feishu-cli auth check --scope "mail:user_mailbox:readonly" 可验证 scope| 命令 | 用途 |
|---|---|
| mail message | 获取单封邮件(含 HTML 或纯文本 body) |
| mail messages | 批量获取多封邮件 |
| mail thread | 获取邮件线程(对话) |
| mail triage | 列出/过滤邮件(folder/label/query/unread-only) |
| mail signature | 列出/查看邮箱签名(--mailbox 定位邮箱,旧名 --from 仍兼容;--detail <签名ID> 取单个详情;-o json 返回完整 {signatures, usages};支持 --dry-run) |
# 查未读收件箱
feishu-cli mail triage --folder INBOX --unread-only --page-size 20
# 列出可用文件夹和标签
feishu-cli mail triage --list-folders
feishu-cli mail triage --list-labels
# 搜索邮件
feishu-cli mail triage --query "周会"
# 获取单封
feishu-cli mail message --message-id msg_xxx
feishu-cli mail message --message-id msg_xxx --format plain_text_full
# 批量获取
feishu-cli mail messages --message-ids m1,m2,m3
# 获取线程
feishu-cli mail thread --thread-id thread_xxx
# 列出邮箱签名(默认 mailbox=me)
feishu-cli mail signature
feishu-cli mail signature --mailbox me -o json # JSON 输出含完整 {signatures, usages}
# 查看单个签名详情(从列表里筛出该 ID 的渲染详情)
feishu-cli mail signature --detail 7012345678901234567
| 命令 | 用途 |
|---|---|
| mail send | 发送邮件(默认草稿,加 --confirm-send 立即发送) |
| mail draft-create | 创建草稿(不发送) |
| mail draft-edit | 编辑已有草稿(全量覆盖) |
| mail reply | 回复邮件(自动 Re: 前缀 + 引用块 + In-Reply-To) |
| mail reply-all | 全部回复(包含原邮件 To 和 CC 的所有人,自动排除自己) |
| mail forward | 转发邮件(自动 Fwd: 前缀 + 原文;正文 text-only) |
# 发邮件(默认保存为草稿,安全兜底)
feishu-cli mail send --to [email protected] --subject "测试" --body "hi"
# 直接发送
feishu-cli mail send --to [email protected] --subject "测试" --body "hi" --confirm-send
# 多人、抄送、HTML
feishu-cli mail send --to [email protected],[email protected] --cc [email protected] \
--subject "会议纪要" --body "<h2>议程</h2><p>1. ...</p>" --html --confirm-send
# 创建草稿
feishu-cli mail draft-create --to [email protected] --subject "草稿" --body "初稿"
# 编辑草稿
feishu-cli mail draft-edit --draft-id xxx --to [email protected] --subject "修订" --body "新内容"
# 回复
feishu-cli mail reply --message-id msg_xxx --body "收到,周三开会"
feishu-cli mail reply --message-id msg_xxx --body "同意" --confirm-send
# 全部回复
feishu-cli mail reply-all --message-id msg_xxx --body "+1"
# 转发
feishu-cli mail forward --message-id msg_xxx --to [email protected] --body "请关注此邮件"
# 1. 查未读
feishu-cli mail triage --folder INBOX --unread-only -o json > unread.json
# 2. 逐封处理(拿 message_id → 看内容 → 回复)
feishu-cli mail message --message-id <id> -o json
feishu-cli mail reply --message-id <id> --body "已阅" --confirm-send
feishu-cli mail send \
--to [email protected] \
--subject "周报" \
--body "$(cat weekly-report.html)" \
--html \
--confirm-send
# 1. 创建草稿
DRAFT_ID=$(feishu-cli mail draft-create --to [email protected] --subject "合同" --body "初稿" -o json | jq -r .draft_id)
# 2. 审阅后修改
feishu-cli mail draft-edit --draft-id $DRAFT_ID --to [email protected] --subject "合同 v2" --body "修订后内容"
# 3. 通过 mail send 重建为真发送(draft-edit 只更新不发送)
# 或在飞书 Web 上手动发送
所有 mail 命令均必须使用 User Access Token(先 feishu-cli auth login)。下表覆盖全部 mail 子命令:
| 命令 | 必需 scope |
|---|---|
| mail triage | mail:user_mailbox:readonly、mail:user_mailbox.message:readonly、mail:user_mailbox.message.body:read、mail:user_mailbox.message.address:read、mail:user_mailbox.message.subject:read |
| mail message / mail messages / mail thread | 同上只读集 |
| mail signature | mail:user_mailbox:readonly(签名只需这一个,无需 message.* 系列) |
| mail send | 上述只读权限 + mail:user_mailbox.message:send、mail:user_mailbox.message:modify(草稿创建走 :modify,--confirm-send 触发 :send);--inline-images-auto-scan 额外需要 drive:drive、drive:file:upload 和 auth:user.id:read(用于获取上传 parent_node 所需的 open_id) |
| mail draft-create / mail draft-edit | 上述只读权限 + mail:user_mailbox.message:modify(仅写草稿,不发送,不需 :send) |
| mail reply / mail reply-all / mail forward | 上述只读权限 + mail:user_mailbox.message:send、mail:user_mailbox.message:modify(先建草稿后发送,与 mail send --confirm-send 同) |
| mail template create | mail:user_mailbox:readonly + mail:user_mailbox.message:modify |
| mail template list | mail:user_mailbox:readonly |
推荐预检:
# 仅签名(只需一个 scope,不要过度申请 message.* 系列) feishu-cli auth check --scope "mail:user_mailbox:readonly" # 消息只读类(message / messages / thread / triage) feishu-cli auth check --scope "mail:user_mailbox:readonly mail:user_mailbox.message:readonly mail:user_mailbox.message.body:read mail:user_mailbox.message.address:read mail:user_mailbox.message.subject:read" # 写类(含 send / reply / forward / 草稿) feishu-cli auth check --scope "mail:user_mailbox:readonly mail:user_mailbox.message:modify mail:user_mailbox.message:send"
mail send 默认只保存草稿(安全兜底)。必须显式加 --confirm-send 才会真正发送邮件。send / draft-create / draft-edit / reply / reply-all 如果 --body 含以下任一标签会自动按 HTML 发送:<html> / <body> / <div> / <p> / <br> / <b> / <i> / <a / <table> / <h1> / <h2> / <h3>。可用 --plain-text 或 --html 强制指定。forward 当前没有 --html/--plain-text 参数。reply/reply-all 会自动把原邮件 body 作为 > 引用块附加到回复正文后。--from 时,从 mailbox profile(GET /profile)自动读取 primary_email_address 和 name。/drafts API。--mailbox 默认 me(当前登录用户),也可以传具体邮箱地址(前提是当前 Token 有权限)。reply 自动避免 Re: Re: 重复;forward 自动避免 Fwd: Fwd: 重复。reply/reply-all 自动从原邮件的 smtp_message_id / references 继承,确保邮件客户端正确展示对话线程。mail send --inline-images-auto-scan 支持,仅在 HTML body 下生效。mail send --inline-images-auto-scan 自动扫描 HTML body 中
<img src="本地路径"> → 上传 drive (parent_type=email) → 重写为 cid:xxx →
multipart/related 拼装。
.. 路径遍历;限 cwd / home 子树内\r\n + 边界前 \r\n 隔离)cid: / http(s): / data: / //cdn 等不重复上传auth login 缓存里有当前用户 open_id(drive upload 的 parent_node 必填)# 自动扫描内嵌图,HTML body 中 <img src="./figs/chart.png"> 会被改写为 cid:xxx
feishu-cli mail send --to [email protected] --subject "周报" \
--body "$(cat report.html)" --html --inline-images-auto-scan --confirm-send
# 创建模板(body 直接传字符串;读文件请用 shell 展开)
feishu-cli mail template create --name "周报模板" \
--subject "本周进度" --body "$(cat template.html)"
# 列出全部模板(接口不分页,一次性返回 id+name)
feishu-cli mail template list
feishu-cli mail template list -o json
模板接口使用邮箱读写相关 User Token 权限。建议先预检:
feishu-cli auth check --scope "mail:user_mailbox:readonly mail:user_mailbox.message:modify"
receipt send/decline / watch (WebSocket) / share-to-chat / template update / template delete
--from / --from-name / --subject / --in-reply-to / --references 以及 to/cc/bcc/inline 图片 filename/cid 不能含 CR/LF,命中即 cli 层 reject 不发送--inline-images-auto-scan 用 filepath.EvalSymlinks 解软链 + Lstat + 10MB size cap;非常规文件(设备 / FIFO / socket)和 > 10MB 直接 rejectmail send 没有 --template-id flag:mail template create 输出的 template_id 仅用于查询/管理,飞书 API 暂未提供 send 时直接引用模板的能力(v1 PR 修正了 mail template create help 的误导)tools
往飞书文档里插入/更新/读取/删除「妙笔BOX」HTML 小组件块——飞书文档里**唯一能跑动画和可交互内容**的载体。 把一整页 HTML(CSS/JS)塞进块,在 iframe 沙箱里真实执行:CSS @keyframes 动画、ECharts/Three.js 图表、 Canvas、可拖拽力导向图、Dashboard、打字机/进度条/状态机动画等都能动。 当用户请求"飞书文档里做动画/能动的图/可交互图表/数据大屏/Dashboard/真实地图/地理飞线/3D 图表(map3D、3D 曲面、Three.js)/在飞书文档里放 ECharts 可视化/批量做一套图表演示"、"妙笔BOX"、"HTML 小组件"、 "在飞书文档里跑 ECharts/CSS 动画/JavaScript"、"嵌入网页/HTML 到飞书文档"、"飞书文档里的图怎么动起来"时使用。 注意:要"动"必须用本技能(妙笔BOX);画板(feishu-cli-board)的 SVG 节点会被服务端栅格化成静态图,不会动。
tools
飞书 OpenAPI 裸调。api GET/POST/PUT/DELETE/PATCH <path> 直接调用任意飞书 OpenAPI 接口, 覆盖 feishu-cli 尚未封装的接口(对齐 lark-cli 的 api 能力)。支持 --params(query)/--data(body JSON)/--data-file(从文件读 body)/ --as auto|user|bot 身份/--dry-run 预览/-o 二进制下载/--format/--jq。 当用户请求"调用 X API"、"裸调飞书接口"、"feishu-cli 没封装的接口怎么调"、"raw api"、 "用 api 命令发请求"、"下载飞书媒体/文件 binary"时使用。 不适用:仅查 schema 不调用(用 feishu-cli schema);已有专用命令的高频场景(用对应 feishu-cli <模块>)。
tools
飞书电子表格高级能力(筛选视图 + 筛选条件 + 下拉单元格 + 浮动图片 + 批量样式)。 filter-view CRUD 管理筛选视图,filter-view condition CRUD 写筛选条件(V3 API); dropdown set/get/update/delete 管理单元格下拉框(V2 dataValidation); image get/update/media-upload/write-image 操作浮动图片与单元格写图; batch-set-style 批量设置多范围单元格样式。 基础读写(read/write/style/add-rows/add-sheet)仍在 feishu-cli 主命令 sheet/bitable, 本 skill 专注高级能力。 当用户请求"筛选视图"、"筛选条件"、"加下拉框"、"数据验证"、"列下拉"、"浮动图片"、"插入图片"、"批量样式"时使用。
tools
飞书 OpenAPI 方法本地浏览 + 通用 API 透传调用。schema `service.resource.method` 三段式查路径/参数/scope(无需联网); `feishu-cli api <method> <path>` 直接调任意端点(v1.29+,覆盖 2500+ 未封装 API)。 当用户请求"飞书有没有 XX API"、"X API 的参数是什么"、"X 方法需要什么 scope"、 "OpenAPI 方法浏览"、"看 SDK 怎么调用"、"调一个没封装的飞书 API"时使用。 不适用:查在线最新 schema(请用 OpenAPI Explorer,本地元数据可能落后于飞书开放平台)。