360 Secure SkillHub
360 安全技能中心

Public Skill

通过脚本调用平台公邮网关,先查询用户已绑定的邮箱,再把主题与正文以纯文本形式推送到该邮箱;未绑定时可按检查状态、发送验证码、校验验证码三步完成绑定。仅支持发送给自己,不支持第三方收件人、附件、抄送密送和 HTML。

sky-lv
sky-lv
热度 39.30
最近更新 2026-05-11 17:48:08
分类:协作依赖:代码执行 / 读写文件 / 第三方 API应用场景:邮件起草 / 工作流 / 自动化脚本

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add public-skill
Metadata
name
public-skill
description
平台公邮:用于将天气、日报、报告、提醒等内容推送到用户自己的邮箱,零配置完成消息留存
version
2.0
trigger_keywords
["公邮","平台邮件","邮件推送","推送邮件","日报推送","天气推送","报告推送","提醒推送","通知推送","绑定邮箱","邮箱绑定","消息留存","推送到邮箱"]
exclude_when
["用户需要发送给第三方收件人","用户需要附件、抄送、密送、HTML","用户需要收件、检索、下载附件","通常应通过 email-skill 统一入口调用,而非直接调用 public-skill"]

Public Skill(平台公邮)

定位:平台公邮通道,用于把内容推送到用户自己的邮箱。

推荐方式:只有在明确只想操作平台公邮时,才直接使用本 skill。

1. 能力边界

支持能力

能力 状态
查询绑定邮箱(query-bindmail) ✅
检查绑定状态(bind-check) ✅
发送绑定验证码(bind-send-code) ✅
完成邮箱绑定(bind-verify) ✅
发送纯文本邮件到自己的邮箱 ✅

不支持能力

能力 说明
发给第三方收件人(--to) ❌ 仅支持发送到自己的邮箱
抄送 / 密送(--cc / --bcc) ❌
附件(--attach) ❌
HTML 邮件(--html / --html-file) ❌ 仅支持纯文本
自定义发件人(--from) ❌
收件 / 检索 / 下载附件 ❌

2. 推荐流程:自动获取绑定邮箱 → 直接发信

进入 public-skill 后,第一步必须先调用 query-bindmail 命令查询用户已绑定的邮箱,再根据结果决定后续操作。

步骤一:查询绑定邮箱(query-bindmail)

bash <SCRIPT_PATH>/scripts/unix/email_gateway.sh query-bindmail

该命令会调用 /data/4227/forward 接口,返回结果如下:

成功(用户已绑定邮箱):

{
  "success": true,
  "email": "user@qq.com",
  "message": "已检测到平台公邮绑定邮箱"
}

失败(未绑定或网关异常):

{
  "success": false,
  "error_code": 3,
  "message": "当前未检测到已绑定的平台公邮邮箱"
}

步骤二:根据结果决定后续操作

  • 若 success 为 true → 拿到 email 字段,直接用该邮箱调用 send 发信
  • 若 success 为 false → 引导用户走手动绑定流程(见第 3 节)

步骤三:发送邮件

拿到绑定邮箱后,使用 --email 参数传入发信:

bash <SCRIPT_PATH>/scripts/unix/email_gateway.sh send \
  --email 'user@qq.com' \
  --subject '今日日报' \
  --body '这是今天的日报内容'

也可以通过文件读取主题和正文:

bash <SCRIPT_PATH>/scripts/unix/email_gateway.sh send \
  --email 'user@qq.com' \
  --subject-file '/tmp/subject.txt' \
  --body-file '/tmp/report.txt'

完整流程图

用户请求发送邮件
       │
       ▼
  调用 query-bindmail
       │
       ▼
  返回 4227 接口结果
       │
       ├── success=true,拿到 email ──► send --email <email> ... ──► 完成 ✅
       │
       └── success=false
              │
              └── 引导用户走绑定流程(第 3 节)

3. 手动绑定流程(仅在 4227 接口无法获取绑定邮箱时使用)

当 4227 接口未返回绑定邮箱时,需要用户手动完成以下 3 步:

步骤一:检查绑定状态

bash <SCRIPT_PATH>/scripts/unix/email_gateway.sh bind-check \
  --email 'you@example.com'

步骤二:发送验证码

bash <SCRIPT_PATH>/scripts/unix/email_gateway.sh bind-send-code \
  --email 'you@example.com'

步骤三:校验验证码

bash <SCRIPT_PATH>/scripts/unix/email_gateway.sh bind-verify \
  --email 'you@example.com' \
  --code '123456'

绑定说明

  • 必须严格按 bind-check → bind-send-code → bind-verify 顺序执行
  • 绑定成功后,无需重复绑定
  • send 会在发送前自动做绑定检查;若未绑定,会返回引导信息

4. send 参数说明

参数 必填 说明
--email <email> 推荐 用户自己的邮箱地址;推荐先通过 query-bindmail 获取绑定邮箱后传入。send 内部也会尝试自动获取,但建议显式传入以确保明确
--subject <text> 二选一 主题文本
--subject-file <path> 二选一 从文件读取主题
--body <text> 二选一 正文文本
--body-file <path> 二选一 从文件读取正文
--content_type text 否 仅支持 text

明确不支持的参数

以下参数传入后会直接报错,并提示改走个人邮箱通道:

  • --to
  • --cc
  • --bcc
  • --attach
  • --from
  • --html
  • --html-file
  • --content_type html

5. 命令列表

命令 说明
query-bindmail 查询用户已绑定的平台公邮邮箱(调用 4227 接口),推荐在发信前先调用
bind-check 检查邮箱绑定状态
bind-send-code 发送绑定验证码
bind-verify 完成邮箱绑定
send 给自己的邮箱发送纯文本邮件
capabilities 查看本 skill 能力
help 查看帮助

6. 错误处理建议

错误 处理方式
未绑定平台公邮 走绑定流程
传了不支持的参数 改用 email-skill send --provider personal
平台额度不足 建议改用 email-skill send --provider auto,由系统回退到个人邮箱
网关通信异常 报告错误并稍后重试

7. 安全规则

  1. 发送邮件失败后禁止自动重试
  2. 不要输出 Token、验证码、账号凭证等敏感信息
  3. 平台公邮只负责推送到自己的邮箱,不要拿它模拟通用 SMTP 发信

8. 与 email-skill 的关系

  • email-skill 是统一入口
  • public-skill 是“结果推送到自己邮箱”场景下的平台公邮下游通道
  • 架构上,平台公邮与个人邮箱是并行路径;通常由模型先根据场景决定是否选择 public-skill
  • 只有在调用方使用 email-skill --provider auto 且参数满足公邮条件时,路由器才会自动尝试 public-skill
  • 当平台额度不足或通道异常时,由 email-skill 自动回退到 imap-smtp-email