{"skill":{"slug":"public-skill","displayName":"Public Skill","summary":"平台公邮：用于将天气、日报、报告、提醒等内容推送到用户自己的邮箱，零配置完成消息留存","description":"---\r\nname: public-skill\r\ndescription: \"平台公邮：用于将天气、日报、报告、提醒等内容推送到用户自己的邮箱，零配置完成消息留存\"\r\nversion: \"2.0\"\r\ntrigger_keywords:\r\n  - 公邮\r\n  - 平台邮件\r\n  - 邮件推送\r\n  - 推送邮件\r\n  - 日报推送\r\n  - 天气推送\r\n  - 报告推送\r\n  - 提醒推送\r\n  - 通知推送\r\n  - 绑定邮箱\r\n  - 邮箱绑定\r\n  - 消息留存\r\n  - 推送到邮箱\r\nexclude_when:\r\n  - 用户需要发送给第三方收件人\r\n  - 用户需要附件、抄送、密送、HTML\r\n  - 用户需要收件、检索、下载附件\r\n  - 通常应通过 email-skill 统一入口调用，而非直接调用 public-skill\r\n---\r\n\r\n# Public Skill（平台公邮）\r\n\r\n> **定位**：平台公邮通道，用于把内容推送到**用户自己的邮箱**。\r\n>\r\n> **推荐方式**：只有在明确只想操作平台公邮时，才直接使用本 skill。\r\n\r\n## 1. 能力边界\r\n\r\n### 支持能力\r\n\r\n| 能力 | 状态 |\r\n|------|------|\r\n| 查询绑定邮箱（`query-bindmail`） | ✅ |\r\n| 检查绑定状态（`bind-check`） | ✅ |\r\n| 发送绑定验证码（`bind-send-code`） | ✅ |\r\n| 完成邮箱绑定（`bind-verify`） | ✅ |\r\n| 发送纯文本邮件到自己的邮箱 | ✅ |\r\n\r\n### 不支持能力\r\n\r\n| 能力 | 说明 |\r\n|------|------|\r\n| 发给第三方收件人（`--to`） | ❌ 仅支持发送到自己的邮箱 |\r\n| 抄送 / 密送（`--cc` / `--bcc`） | ❌ |\r\n| 附件（`--attach`） | ❌ |\r\n| HTML 邮件（`--html` / `--html-file`） | ❌ 仅支持纯文本 |\r\n| 自定义发件人（`--from`） | ❌ |\r\n| 收件 / 检索 / 下载附件 | ❌ |\r\n\r\n## 2. 推荐流程：自动获取绑定邮箱 → 直接发信\r\n\r\n进入 public-skill 后，**第一步必须先调用 `query-bindmail` 命令查询用户已绑定的邮箱**，再根据结果决定后续操作。\r\n\r\n### 步骤一：查询绑定邮箱（query-bindmail）\r\n\r\n```bash\r\nbash <SCRIPT_PATH>/scripts/unix/email_gateway.sh query-bindmail\r\n```\r\n\r\n该命令会调用 `/data/4227/forward` 接口，返回结果如下：\r\n\r\n**成功（用户已绑定邮箱）：**\r\n```json\r\n{\r\n  \"success\": true,\r\n  \"email\": \"user@qq.com\",\r\n  \"message\": \"已检测到平台公邮绑定邮箱\"\r\n}\r\n```\r\n\r\n**失败（未绑定或网关异常）：**\r\n```json\r\n{\r\n  \"success\": false,\r\n  \"error_code\": 3,\r\n  \"message\": \"当前未检测到已绑定的平台公邮邮箱\"\r\n}\r\n```\r\n\r\n### 步骤二：根据结果决定后续操作\r\n\r\n- 若 `success` 为 `true` → 拿到 `email` 字段，直接用该邮箱调用 `send` 发信\r\n- 若 `success` 为 `false` → 引导用户走手动绑定流程（见第 3 节）\r\n\r\n### 步骤三：发送邮件\r\n\r\n拿到绑定邮箱后，使用 `--email` 参数传入发信：\r\n\r\n```bash\r\nbash <SCRIPT_PATH>/scripts/unix/email_gateway.sh send \\\r\n  --email 'user@qq.com' \\\r\n  --subject '今日日报' \\\r\n  --body '这是今天的日报内容'\r\n```\r\n\r\n也可以通过文件读取主题和正文：\r\n\r\n```bash\r\nbash <SCRIPT_PATH>/scripts/unix/email_gateway.sh send \\\r\n  --email 'user@qq.com' \\\r\n  --subject-file '/tmp/subject.txt' \\\r\n  --body-file '/tmp/report.txt'\r\n```\r\n\r\n### 完整流程图\r\n\r\n```\r\n用户请求发送邮件\r\n       │\r\n       ▼\r\n  调用 query-bindmail\r\n       │\r\n       ▼\r\n  返回 4227 接口结果\r\n       │\r\n       ├── success=true，拿到 email ──► send --email <email> ... ──► 完成 ✅\r\n       │\r\n       └── success=false\r\n              │\r\n              └── 引导用户走绑定流程（第 3 节）\r\n```\r\n\r\n## 3. 手动绑定流程（仅在 4227 接口无法获取绑定邮箱时使用）\r\n\r\n当 4227 接口未返回绑定邮箱时，需要用户手动完成以下 3 步：\r\n\r\n### 步骤一：检查绑定状态\r\n\r\n```bash\r\nbash <SCRIPT_PATH>/scripts/unix/email_gateway.sh bind-check \\\r\n  --email 'you@example.com'\r\n```\r\n\r\n### 步骤二：发送验证码\r\n\r\n```bash\r\nbash <SCRIPT_PATH>/scripts/unix/email_gateway.sh bind-send-code \\\r\n  --email 'you@example.com'\r\n```\r\n\r\n### 步骤三：校验验证码\r\n\r\n```bash\r\nbash <SCRIPT_PATH>/scripts/unix/email_gateway.sh bind-verify \\\r\n  --email 'you@example.com' \\\r\n  --code '123456'\r\n```\r\n\r\n### 绑定说明\r\n\r\n- 必须严格按 `bind-check` → `bind-send-code` → `bind-verify` 顺序执行\r\n- 绑定成功后，无需重复绑定\r\n- `send` 会在发送前自动做绑定检查；若未绑定，会返回引导信息\r\n\r\n## 4. send 参数说明\r\n\r\n| 参数 | 必填 | 说明 |\r\n|------|------|------|\r\n| `--email <email>` | 推荐 | 用户自己的邮箱地址；**推荐先通过 `query-bindmail` 获取绑定邮箱后传入**。`send` 内部也会尝试自动获取，但建议显式传入以确保明确 |\r\n| `--subject <text>` | 二选一 | 主题文本 |\r\n| `--subject-file <path>` | 二选一 | 从文件读取主题 |\r\n| `--body <text>` | 二选一 | 正文文本 |\r\n| `--body-file <path>` | 二选一 | 从文件读取正文 |\r\n| `--content_type text` | 否 | 仅支持 `text` |\r\n\r\n### 明确不支持的参数\r\n\r\n以下参数传入后会直接报错，并提示改走个人邮箱通道：\r\n\r\n- `--to`\r\n- `--cc`\r\n- `--bcc`\r\n- `--attach`\r\n- `--from`\r\n- `--html`\r\n- `--html-file`\r\n- `--content_type html`\r\n\r\n## 5. 命令列表\r\n\r\n| 命令 | 说明 |\r\n|------|------|\r\n| `query-bindmail` | 查询用户已绑定的平台公邮邮箱（调用 4227 接口），**推荐在发信前先调用** |\r\n| `bind-check` | 检查邮箱绑定状态 |\r\n| `bind-send-code` | 发送绑定验证码 |\r\n| `bind-verify` | 完成邮箱绑定 |\r\n| `send` | 给自己的邮箱发送纯文本邮件 |\r\n| `capabilities` | 查看本 skill 能力 |\r\n| `help` | 查看帮助 |\r\n\r\n## 6. 错误处理建议\r\n\r\n| 错误 | 处理方式 |\r\n|------|----------|\r\n| 未绑定平台公邮 | 走绑定流程 |\r\n| 传了不支持的参数 | 改用 `email-skill send --provider personal` |\r\n| 平台额度不足 | 建议改用 `email-skill send --provider auto`，由系统回退到个人邮箱 |\r\n| 网关通信异常 | 报告错误并稍后重试 |\r\n\r\n## 7. 安全规则\r\n\r\n1. **发送邮件失败后禁止自动重试**\r\n2. **不要输出 Token、验证码、账号凭证等敏感信息**\r\n3. **平台公邮只负责推送到自己的邮箱，不要拿它模拟通用 SMTP 发信**\r\n\r\n## 8. 与 `email-skill` 的关系\r\n\r\n- `email-skill` 是统一入口\r\n- `public-skill` 是“结果推送到自己邮箱”场景下的平台公邮下游通道\r\n- 架构上，平台公邮与个人邮箱是并行路径；通常由模型先根据场景决定是否选择 `public-skill`\r\n- 只有在调用方使用 `email-skill --provider auto` 且参数满足公邮条件时，路由器才会自动尝试 `public-skill`\r\n- 当平台额度不足或通道异常时，由 `email-skill` 自动回退到 `imap-smtp-email`\r\n","tags":{"latest":"1.0.0"},"stats":{"comments":0,"downloads":437,"installsAllTime":7,"installsCurrent":7,"stars":0,"versions":1},"createdAt":1778348445940,"updatedAt":1778492888959},"latestVersion":{"version":"1.0.0","createdAt":1778348445940,"changelog":"Public-skill 2.0 introduces a specialized email push channel for platform notifications with streamlined configuration.\n\n- 新增方便推送天气、日报、报告、提醒等内容到用户本人已绑定邮箱，零配置即用。\n- 明确能力边界：仅支持推送到自己的邮箱，纯文本格式，不支持附件、抄送、HTML等高级功能。\n- 推荐调用流程：先自动检测绑定邮箱，再直接发送邮件，未绑定时自动引导手动绑定。\n- 增加详细错误处理和安全规则说明，明确与 email-skill 的集成及自动回退机制。\n- 用于消息留存、通知推送等平台场景，不适用于发信给第三方。","license":"MIT-0"},"metadata":null,"owner":{"handle":"sky-lv","userId":"s17fgkeb63szvtadtmm753m0gd84e4vz","displayName":"SKY-lv","image":"https://avatars.githubusercontent.com/u/259750852?v=4"},"moderation":null}