360 Secure SkillHub
360 安全技能中心

Mails for Agent

核心功能:支持自动接收验证码完成服务注册,具备收发邮件、监控收件箱、关键词搜索、附件下载、线程查看、标签过滤、结构化数据提取(订单/快递等)、邮箱及webhook管理等能力。典型场景:服务注册自动获验证码、批量处理邮件、实时监控新邮件、提取业务数据。需配置相关环境变量,通过HTTP请求调用接口,返回结构化JSON结果。

digidai
digidai
热度 57.16
最近更新 2026-05-18 12:36:48
分类:自动化依赖:第三方 API应用场景:邮件起草 / 数据处理 / 工作流 / 自动化脚本

安装技能

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

执行命令安装此 skill: npx secure-skills-cli add mails-for-agent
Metadata
name
Mails for Agent
description
Complete service registrations autonomously by receiving verification codes. Also: send and receive emails, monitor inbox, search by keyword, download attachments, view threads, filter by label, extract structured data, manage mailbox and webhooks.
version
1.8.0
metadata
{"openclaw":{"requires":{"env":["MAILS_API_URL","MAILS_AUTH_TOKEN","MAILS_MAILBOX"],"bins":[],"primaryEnv":"MAILS_AUTH_TOKEN"}}}

Email Skill — Agent Auth-Completion

You have the email address $MAILS_MAILBOX. Your primary superpower: complete service registrations autonomously by receiving verification codes via GET /api/code?timeout=60.

Make HTTP requests to $MAILS_API_URL with header Authorization: Bearer $MAILS_AUTH_TOKEN.

Sign up for a service: Fill form with $MAILS_MAILBOX → GET /api/code?timeout=60 → enter the code. Done.

API Endpoints

Method Endpoint Description
GET /api/inbox List/search emails. Params: query, limit, offset, direction, label, mode (keyword/semantic/hybrid)
GET /api/email?id=ID Full email with body, attachments, labels
GET /api/code?timeout=60 Wait for verification code (long-poll). Params: timeout, since
POST /api/send Send email. Body: { from, to[], cc[], bcc[], subject, text, html, reply_to, in_reply_to, headers, attachments }
DELETE /api/email?id=ID Delete email and attachments
GET /api/attachment?id=ID Download attachment
GET /api/threads List conversation threads. Params: limit, offset
GET /api/thread?id=ID Get all emails in a thread
POST /api/extract Extract structured data. Body: { email_id, type } type: order/shipping/calendar/receipt/code
GET /api/stats Mailbox statistics (total, inbound, outbound, this month)
GET /api/events SSE real-time event stream. Params: types, since
GET /api/mailbox Mailbox info (status, webhook_url)
PATCH /api/mailbox Update mailbox settings. Body: { webhook_url }
PATCH /api/mailbox/pause Pause mailbox (blocks all operations)
PATCH /api/mailbox/resume Resume paused mailbox
GET /api/mailbox/routes List per-label webhook routes
PUT /api/mailbox/routes Upsert webhook route. Body: { label, webhook_url }
DELETE /api/mailbox/routes?label=X Delete webhook route for label
GET /api/me Mailbox info and capabilities
GET /health Health check (no auth)

Request Format

All requests (except /health) require Authorization: Bearer $MAILS_AUTH_TOKEN header.

POST/PUT/PATCH requests require Content-Type: application/json header.

The to param is optional — the API auto-scopes to the token's mailbox.

Response Shapes

Inbox: { "emails": [{ "id", "from_address", "from_name", "subject", "code", "direction", "status", "received_at", "has_attachments", "attachment_count" }], "search_mode": "keyword" }

Email detail: Full email object with body_text, body_html, headers, metadata, labels, thread_id, in_reply_to, references, attachments[]

Code: { "id": "...", "code": "483920", "from": "...", "subject": "...", "received_at": "..." } or { "code": null }

Send: { "id": "...", "provider_id": "...", "thread_id": "..." }

Threads: { "threads": [{ "thread_id", "latest_email_id", "subject", "from_address", "from_name", "received_at", "message_count", "has_attachments" }] }

Stats: { "mailbox", "total_emails", "inbound", "outbound", "emails_this_month", "ingest": { "pending", "parsed", "failed" } }

Extract: { "email_id": "...", "extraction": { "type": "order", "order_id": "...", ... } }

Events (SSE): event: message.received\ndata: { "email_id", "mailbox", "from", "subject", ... }

Send Fields

Field Required Description
from Yes Must be $MAILS_MAILBOX (enforced server-side)
to Yes Array of recipients (max 50)
subject Yes Max 998 characters
text text or html Plain text body
html text or html HTML body
cc No Array of CC recipients
bcc No Array of BCC recipients
reply_to No Reply-to address
in_reply_to No Message-ID of parent email (enables threading)
headers No Custom headers object
attachments No [{ filename, content (base64), content_type?, content_id? }]

Labels

Emails are auto-labeled on receive: newsletter, notification, code, personal. Filter with ?label=notification.

Common Flows

Sign up for a service: Fill form with $MAILS_MAILBOX → GET /api/code?timeout=60 → enter the code

Process inbox: GET /api/inbox → GET /api/email?id=ID → DELETE /api/email?id=ID

Reply to an email: GET /api/email?id=ID → POST /api/send with in_reply_to set to the email's message_id

View threads: GET /api/threads → GET /api/thread?id=THREAD_ID

Monitor in real-time: GET /api/events (SSE stream, reconnects automatically)

Extract data: POST /api/extract with {"email_id":"ID","type":"order"}

Set up webhook routing: PUT /api/mailbox/routes with {"label":"code","webhook_url":"https://..."}

Constraints

  • from must match $MAILS_MAILBOX
  • Verification codes: 4-12 alphanumeric (EN/ZH/JA/KO)
  • Code wait timeout max 55 seconds
  • Send rate limit: 100 emails/day per mailbox
  • Search uses FTS5 full-text search (keyword mode) or Vectorize (semantic mode)