Inboxes - Send Message
curl --request POST \
--url https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/send \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"labels": [
"<string>"
],
"reply_to": "<string>",
"to": "<string>",
"cc": "<string>",
"bcc": "<string>",
"subject": "<string>",
"text": "<string>",
"html": "<string>",
"attachments": [
{
"filename": "<string>",
"content_type": "<string>",
"content_id": "<string>",
"content": "<string>",
"url": "<string>"
}
],
"headers": {},
"track_opens": true
}
'import requests
url = "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/send"
payload = {
"labels": ["<string>"],
"reply_to": "<string>",
"to": "<string>",
"cc": "<string>",
"bcc": "<string>",
"subject": "<string>",
"text": "<string>",
"html": "<string>",
"attachments": [
{
"filename": "<string>",
"content_type": "<string>",
"content_id": "<string>",
"content": "<string>",
"url": "<string>"
}
],
"headers": {},
"track_opens": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
labels: ['<string>'],
reply_to: '<string>',
to: '<string>',
cc: '<string>',
bcc: '<string>',
subject: '<string>',
text: '<string>',
html: '<string>',
attachments: [
{
filename: '<string>',
content_type: '<string>',
content_id: '<string>',
content: '<string>',
url: '<string>'
}
],
headers: {},
track_opens: true
})
};
fetch('https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/send', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/send",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'labels' => [
'<string>'
],
'reply_to' => '<string>',
'to' => '<string>',
'cc' => '<string>',
'bcc' => '<string>',
'subject' => '<string>',
'text' => '<string>',
'html' => '<string>',
'attachments' => [
[
'filename' => '<string>',
'content_type' => '<string>',
'content_id' => '<string>',
'content' => '<string>',
'url' => '<string>'
]
],
'headers' => [
],
'track_opens' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/send"
payload := strings.NewReader("{\n \"labels\": [\n \"<string>\"\n ],\n \"reply_to\": \"<string>\",\n \"to\": \"<string>\",\n \"cc\": \"<string>\",\n \"bcc\": \"<string>\",\n \"subject\": \"<string>\",\n \"text\": \"<string>\",\n \"html\": \"<string>\",\n \"attachments\": [\n {\n \"filename\": \"<string>\",\n \"content_type\": \"<string>\",\n \"content_id\": \"<string>\",\n \"content\": \"<string>\",\n \"url\": \"<string>\"\n }\n ],\n \"headers\": {},\n \"track_opens\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/send")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"labels\": [\n \"<string>\"\n ],\n \"reply_to\": \"<string>\",\n \"to\": \"<string>\",\n \"cc\": \"<string>\",\n \"bcc\": \"<string>\",\n \"subject\": \"<string>\",\n \"text\": \"<string>\",\n \"html\": \"<string>\",\n \"attachments\": [\n {\n \"filename\": \"<string>\",\n \"content_type\": \"<string>\",\n \"content_id\": \"<string>\",\n \"content\": \"<string>\",\n \"url\": \"<string>\"\n }\n ],\n \"headers\": {},\n \"track_opens\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/send")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"labels\": [\n \"<string>\"\n ],\n \"reply_to\": \"<string>\",\n \"to\": \"<string>\",\n \"cc\": \"<string>\",\n \"bcc\": \"<string>\",\n \"subject\": \"<string>\",\n \"text\": \"<string>\",\n \"html\": \"<string>\",\n \"attachments\": [\n {\n \"filename\": \"<string>\",\n \"content_type\": \"<string>\",\n \"content_id\": \"<string>\",\n \"content\": \"<string>\",\n \"url\": \"<string>\"\n }\n ],\n \"headers\": {},\n \"track_opens\": true\n}"
response = http.request(request)
puts response.read_body{
"message_id": "<string>",
"thread_id": "<string>"
}消息
Inboxes - Send Message
从某个收件箱发出一封新邮件,返回 message_id 和 thread_id。
POST
https://api.aisa.one
/
apis
/
v1
/
agentmail
/
inboxes
/
{inbox_id}
/
messages
/
send
Inboxes - Send Message
curl --request POST \
--url https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/send \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"labels": [
"<string>"
],
"reply_to": "<string>",
"to": "<string>",
"cc": "<string>",
"bcc": "<string>",
"subject": "<string>",
"text": "<string>",
"html": "<string>",
"attachments": [
{
"filename": "<string>",
"content_type": "<string>",
"content_id": "<string>",
"content": "<string>",
"url": "<string>"
}
],
"headers": {},
"track_opens": true
}
'import requests
url = "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/send"
payload = {
"labels": ["<string>"],
"reply_to": "<string>",
"to": "<string>",
"cc": "<string>",
"bcc": "<string>",
"subject": "<string>",
"text": "<string>",
"html": "<string>",
"attachments": [
{
"filename": "<string>",
"content_type": "<string>",
"content_id": "<string>",
"content": "<string>",
"url": "<string>"
}
],
"headers": {},
"track_opens": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
labels: ['<string>'],
reply_to: '<string>',
to: '<string>',
cc: '<string>',
bcc: '<string>',
subject: '<string>',
text: '<string>',
html: '<string>',
attachments: [
{
filename: '<string>',
content_type: '<string>',
content_id: '<string>',
content: '<string>',
url: '<string>'
}
],
headers: {},
track_opens: true
})
};
fetch('https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/send', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/send",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'labels' => [
'<string>'
],
'reply_to' => '<string>',
'to' => '<string>',
'cc' => '<string>',
'bcc' => '<string>',
'subject' => '<string>',
'text' => '<string>',
'html' => '<string>',
'attachments' => [
[
'filename' => '<string>',
'content_type' => '<string>',
'content_id' => '<string>',
'content' => '<string>',
'url' => '<string>'
]
],
'headers' => [
],
'track_opens' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/send"
payload := strings.NewReader("{\n \"labels\": [\n \"<string>\"\n ],\n \"reply_to\": \"<string>\",\n \"to\": \"<string>\",\n \"cc\": \"<string>\",\n \"bcc\": \"<string>\",\n \"subject\": \"<string>\",\n \"text\": \"<string>\",\n \"html\": \"<string>\",\n \"attachments\": [\n {\n \"filename\": \"<string>\",\n \"content_type\": \"<string>\",\n \"content_id\": \"<string>\",\n \"content\": \"<string>\",\n \"url\": \"<string>\"\n }\n ],\n \"headers\": {},\n \"track_opens\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/send")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"labels\": [\n \"<string>\"\n ],\n \"reply_to\": \"<string>\",\n \"to\": \"<string>\",\n \"cc\": \"<string>\",\n \"bcc\": \"<string>\",\n \"subject\": \"<string>\",\n \"text\": \"<string>\",\n \"html\": \"<string>\",\n \"attachments\": [\n {\n \"filename\": \"<string>\",\n \"content_type\": \"<string>\",\n \"content_id\": \"<string>\",\n \"content\": \"<string>\",\n \"url\": \"<string>\"\n }\n ],\n \"headers\": {},\n \"track_opens\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/send")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"labels\": [\n \"<string>\"\n ],\n \"reply_to\": \"<string>\",\n \"to\": \"<string>\",\n \"cc\": \"<string>\",\n \"bcc\": \"<string>\",\n \"subject\": \"<string>\",\n \"text\": \"<string>\",\n \"html\": \"<string>\",\n \"attachments\": [\n {\n \"filename\": \"<string>\",\n \"content_type\": \"<string>\",\n \"content_id\": \"<string>\",\n \"content\": \"<string>\",\n \"url\": \"<string>\"\n }\n ],\n \"headers\": {},\n \"track_opens\": true\n}"
response = http.request(request)
puts response.read_body{
"message_id": "<string>",
"thread_id": "<string>"
}从某个收件箱发出一封新邮件,返回
在你的 agent 里把这个端点跑起来 →
message_id 和 thread_id。接受 to、cc、bcc、subject、text、html、labels 和 attachments。🔴 **这会发出真实邮件,且发出去收不回。**所有 AIsa 调用方共用同一个 AgentMail 账号,因此这里会触及其他调用方创建的收件箱,所以发件地址未必是你创建的——先用 get_agentmail_inbox 确认。回复既有邮件用 post_agentmail_inbox_message_reply;只写不发用 post_agentmail_inbox_draft。
示例
curl -X POST "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/send" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY"
// 把整段复制给 Claude Code、Codex、Cursor 或任意 coding agent。
// 连接、授权、跑通这个例子需要的东西都在里面 ——
// 不用粘贴任何 key,浏览器里点一次 Allow 就好。
{
"operation_id": "post_agentmail_inbox_message_send",
"arguments": {},
"max_price_usd": 0.05
}
// ── for the agent ─────────────────────────────────────────────────────────
// Register the AIsa MCP server, then call its `use` tool with the JSON above.
// name aisa
// endpoint https://mcp.aisa.one/mcp
// transport streamable-http
// auth OAuth. The server publishes RFC 9728 metadata, so open a
// browser and the user clicks Allow once — nothing to paste.
// If AISA_API_KEY is set, send it as a bearer header instead.
// Use your own MCP mechanism, not a hand-edited config file:
// Codex codex mcp add aisa --url https://mcp.aisa.one/mcp
// Claude Code claude mcp add --transport http -s user aisa https://mcp.aisa.one/mcp
// Cursor / VS Code a "url" entry for https://mcp.aisa.one/mcp in the MCP config
// The server lists five tools over https://mcp.aisa.one/servers worth of APIs:
// search, get_details, use, batch_use, list_categories. search and
// get_details are free; use is billed per call and max_price_usd refuses
// anything above the cap before spending. This operation's full contract —
// every argument, the response shape, the price and the pitfalls — is at
// https://aisa.one/docs/zh/api-reference/agentmail/post_agentmail-inboxes-inbox-id-messages-send.md
// Then run the call and show me the result.
第一次用? 把任意 MCP 客户端指向
https://mcp.aisa.one/mcp —— Claude Code、
Codex、Cursor、VS Code 都可以。鉴权走 OAuth:客户端打开浏览器,你点一次
Allow,不需要粘贴任何 key。各客户端的具体命令和每次调用的价格见
aisa.one/zh-cn/mcp。授权
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
路径参数
收件箱的 ID。
请求体
application/json
消息标签。
回复地址(一个或多个)。
收件人地址。
抄送收件人地址。
密送收件人地址。
消息主题。
消息的纯文本正文。
消息的 HTML 正文。
消息中要包含的附件。
Show child attributes
Show child attributes
消息中要包含的标头。
Show child attributes
Show child attributes
Track when this message is first opened. Requires a custom domain with tracking enabled and
an HTML body. Opens surface as the opened label on the message and as a message.opened
event. One pixel is injected per message, not per recipient, so a message with several
recipients fires once when any of them opens it, and the event does not identify which one.