WPS Mail (邮件) Operations
通过 wpsx CLI 操作 WPS 邮件,查收邮件、搜索邮件、创建草稿并发送。按场景选择对应 Playbook 执行。
Setup
Endpoint: https://openapi.wps.cn/mcp/v2/kso-mail/message
Examples below use {ENDPOINT} for this URL. In shell snippets, either replace {ENDPOINT} with the full URL or set ENDPOINT="https://openapi.wps.cn/mcp/v2/kso-mail/message" and use $ENDPOINT.
认证: token 由 wpsx 自动注入。首次使用请先运行 wpsx auth --app-id <ID> --app-secret <SECRET> 完成 WPS 365 OAuth2 授权。
调用格式:
wpsx call <tool> -p '<json>' https://openapi.wps.cn/mcp/v2/kso-mail/message -f json
时间格式: 使用 start_time_str / end_time_str,格式为 yyyy-mm-dd hh:mm:ss(北京时间)。也支持秒级时间戳 start_time / end_time,两者同时提供时时间戳优先。
Guardrails
当前时间: 涉及"今天"、"本周"等相对时间时,使用系统当前时间(北京时间 UTC+8)计算精确时间范围。
确认规则:
- 发送邮件前(
send_draft),必须先展示草稿内容(收件人、主题、正文摘要)让用户确认 - 回复/转发邮件前,展示组织好的内容让用户确认
- 禁止使用虚构的邮箱地址
空结果处理:
- 搜索/查询返回空 → 告知用户无匹配邮件,建议调整关键词或时间范围
- keyword 匹配收件人返回多个候选 → 展示列表让用户选择
分页策略:
- 用户要求"全部/所有" → 自动翻页直到结束
- 其他情况 → 展示首页结果,告知"还有更多数据,需要继续查看吗?"
错误处理:
- API 返回错误 → 将错误信息展示给用户,不要吞掉
- Endpoint 不可达 / 401 未授权 → 提示用户先运行
wpsx auth完成 WPS 365 授权
Playbook 1: 查看最近邮件 / 收件箱
触发: 用户说"看看我的邮件"、"最近收到什么邮件"、"今天有什么邮件"、"收件箱有什么"
wpsx call kso_mail_list_letter \
-p '{"page_size": 20}' \
{ENDPOINT} -f json
可选过滤:
start_time_str/end_time_str: 限定时间范围filter:["unread"](未读)或["flagged"](星标)page_token: 翻页
整理输出:按时间倒序展示邮件主题、发件人、时间、是否已读/有附件。
Playbook 2: 查看未读邮件
触发: 用户说"有没有未读邮件"、"帮我看看没读的邮件"、"未读邮件有哪些"
wpsx call kso_mail_list_letter \
-p '{"page_size": 20, "filter": ["unread"]}' \
{ENDPOINT} -f json
输出:未读邮件数量 + 每封邮件的主题、发件人、时间摘要。
Playbook 3: 读取邮件详情
触发: 用户说"帮我看看这封邮件写了什么"、"读一下XX邮件"、"邮件内容是什么"
步骤:
定位邮件 — 如果用户给了关键词,先搜索:
wpsx call kso_mail_search_letter \ -p '{"keyword": "{关键词}", "page_size": 10}' \ {ENDPOINT} -f json从结果
items[].id取message_id。如果多个结果,让用户选择。获取邮件详情:
wpsx call kso_mail_get_letter \ -p '{"message_id": "{MESSAGE_ID}"}' \ {ENDPOINT} -f json整理输出 — 展示主题、发件人、收件人、时间、正文内容。如用户要求,做摘要/翻译/提取待办。
Playbook 4: 搜索邮件
触发: 用户说"找一下关于XX的邮件"、"谁发过XX邮件"、"搜索XX相关邮件"
wpsx call kso_mail_search_letter \
-p '{"keyword": "{关键词}", "page_size": 20}' \
{ENDPOINT} -f json
可选参数:
type: 搜索范围 —subject(主题,默认)/sender(发件人)/receiver(收件人)/body(正文)/all(全部)start_time_str/end_time_str: 限定时间范围filter:["unread"]或["flagged"]
展示匹配邮件:主题 + 发件人 + 时间 + 正文预览。
Playbook 5: 发送邮件
触发: 用户说"帮我发封邮件给XX"、"写邮件"、"发邮件给XX"、"通过邮件发给XX"
步骤:
确认邮件信息 — 收件人、主题、正文。如用户未提供完整信息,逐项确认。
创建草稿:
wpsx call kso_mail_create_draft \ -p '{"subject": "{主题}", "to_recipients": [{收件人}], "body": "{正文内容}"}' \ {ENDPOINT} -f json收件人格式(二选一):
- 已知邮箱:
{"name": "张三", "email_address": "zhangsan@wps.cn"} - 不知道邮箱:
{"keyword": "张三"}(系统自动搜索匹配)
可选:
cc_recipients: 抄送人(格式同收件人)bcc_recipients: 密送人(格式同收件人)
- 已知邮箱:
关键字匹配多人时 — 系统会返回候选列表,向用户确认后重新创建草稿。
展示草稿预览 — 将草稿的收件人、主题、正文摘要展示给用户确认。用户确认后再发送。
发送草稿:
wpsx call kso_mail_send_draft \ -p '{"message_id": "{MESSAGE_ID}"}' \ {ENDPOINT} -f jsonmessage_id来自create_draft的返回值。
注意: 必须先 create_draft 再 send_draft,不能直接发送。收件人禁止使用虚构邮箱地址。邮件发送不可撤回,务必确认后再执行。
Playbook 6: 回复 / 转发邮件
触发: 用户说"帮我回复这封邮件"、"转发这封邮件给XX"
步骤:
获取原邮件详情 — 执行 Playbook 3 获取
message_id、发件人、主题、正文。组织回复/转发内容:
- 回复: 收件人为原发件人,主题加
Re:前缀,正文包含引用原文 - 转发: 收件人为目标用户,主题加
Fwd:前缀,正文包含原邮件内容
- 回复: 收件人为原发件人,主题加
创建草稿并发送 — 执行 Playbook 5 的步骤 2-5。
注意: 当前通过手动构造 Re: / Fwd: 前缀实现回复/转发,邮件线程关联取决于 API 支持程度。如需精确线程关联,确认 API 是否支持 in_reply_to 参数。
Playbook 7: 邮件摘要 / 日报素材
触发: 用户说"帮我总结今天的邮件"、"这周邮件摘要"、"邮件里有什么重要的事"
步骤:
获取时间范围内的邮件:
wpsx call kso_mail_list_letter \ -p '{"page_size": 50, "start_time_str": "{起始时间}", "end_time_str": "{结束时间}"}' \ {ENDPOINT} -f json对重要邮件获取详情 — 对
body_preview不够完整的、有附件的或标记重要的邮件,执行get_letter获取完整内容。生成摘要 — 按发件人或主题分组,提炼关键信息、待办事项、需要回复的邮件。