옵션

AgentMail API를 사용하여 AI 에이전트에게 전용 이메일 수신함을 제공하세요. 이메일 에이전트를 구축하거나, 프로그래밍 방식으로 이메일을 보내거나 수신하거나, 수신함을 관리하거나, 첨부 파일을 처리하거나, 라벨을 사용하여 정리하거나, 사람의 승인을 받기 위해 초안을 작성하거나, 웹훅/웹소켓을 통해 실시간 알림을 설정할 때 활용하세요. 포드(pod)를 통한 멀티테넌트 격리를 지원합니다.

...모든 것을 확장하십시오
93
업데이트 된 시간 2026년 6월 29일

소개 agentmail

AgentMail 는 AI 에이전트를 위해 특별히 설계된 API 우선 이메일 플랫폼으로, 개발자 친화적인 SDK를 통해 프로그래밍 방식의 이메일 기능을 제공합니다. 이 플랫폼은 AI 에이전트에 고유한 이메일 신원을 부여하고, 이메일 통신을 자율적으로 보내고, 받고, 관리할 수 있는 기능을 제공함으로써 관련 과제를 해결합니다. 개발자는 복잡한 이메일 인프라를 처음부터 구축할 필요 없이, 단 몇 줄의 코드만으로 AI 에이전트를 위한 이메일 수신함을 신속하게 프로비저닝하고 애플리케이션에 이메일 기능을 통합할 수 있습니다.

이 플랫폼은 자동 생성되거나 사용자 정의된 이메일 주소를 활용한 확장 가능한 온디맨드 수신함 생성, 발송 및 답장 기능을 포함한 전체 메시지 수명 주기 관리, 스레드 기반 대화 그룹화, 라벨 기반 정리, 첨부 파일 처리 등 포괄적인 이메일 관리 기능을 제공합니다. 이 플랫폼은 최적의 전달률을 위해 일반 텍스트 및 HTML 이메일 형식을 모두 지원하며, 웹훅(webhooks)과 웹소켓(websockets)을 통한 실시간 알림 기능을 포함합니다. SDK는 TypeScript/Node.js 및 Python 환경 모두에서 사용할 수 있으며, 두 언어에 걸쳐 일관된 API를 제공합니다.

AgentMail AI 기반 이메일 에이전트, 고객 지원 자동화 시스템, 아웃리치 및 커뮤니케이션 도구, 또는 프로그래밍 방식의 이메일 기능이 필요한 모든 애플리케이션을 개발하는 개발자에게 이상적입니다. 또한, 포드(pod) 기반의 격리를 통해 멀티테넌트 아키텍처를 지원하므로, 여러 에이전트나 고객이 별도의 이메일 환경을 필요로 하는 SaaS 애플리케이션에 적합합니다. 수신함을 모니터링해야 하는 AI 어시스턴트, 자동화된 후속 조치 시스템, 또는 AI가 사람이 검토할 이메일을 준비하는 초안 승인 워크플로우를 구축하든 간에, AgentMail 는 이러한 사용 사례를 효율적으로 처리할 수 있는 인프라와 API를 제공합니다.

자주 묻는 질문

AgentMail 는 어떤 프로그래밍 언어를 지원하나요?

AgentMail [email protected]는 TypeScript/Node.js 및 Python에 대한 공식 SDK를 지원합니다. 두 SDK 모두 수신함 관리, 메시지 송수신, 라벨을 이용한 정리, 스레드 처리와 같은 동일한 핵심 기능을 제공합니다.

AgentMail 에서 사용자 지정 이메일 도메인을 사용할 수 있나요?

예, 받은 편지함을 생성할 때 사용자 지정 사용자 이름과 도메인을 사용하여 받은 편지함을 만들 수 있습니다. 사용자 지정 매개 변수를 지정하지 않으면, AgentMail 이 기본 agentmail.to 도메인을 사용하여 이메일 주소를 자동으로 생성합니다.

AgentMail 는 이메일 대화를 어떻게 정리하나요?

AgentMail [email protected]는 최신 이메일 클라이언트와 유사하게 스레드를 사용하여 대화 내의 관련 메시지를 그룹화합니다. 스레드를 나열하고, 라벨별로 필터링하며, 스레드 내의 모든 메시지를 불러올 수 있습니다. 또한, 사용자 지정 라벨을 사용하여 메시지를 유연하게 분류할 수 있습니다.

이메일을 일반 텍스트와 HTML 버전으로 모두 보내야 하나요?

네, AgentMail 에서는 최적의 전달률을 위해 항상 텍스트와 HTML 버전의 메시지를 모두 발송할 것을 권장합니다. 이렇게 하면 다양한 이메일 클라이언트 간의 호환성이 보장되며, 이메일이 성공적으로 전달될 가능성이 높아집니다.

AgentMail 는 실시간 알림을 지원하나요?

네, AgentMail 은 웹훅(webhooks) 및 웹소켓(websockets)을 통한 실시간 알림을 지원하므로, 에이전트의 수신함에 새 메시지가 도착하거나 다른 이벤트가 발생하면 애플리케이션에 즉시 알림이 전송됩니다.

GitHub에서 보기

AgentMail SDK

AgentMail is an API-first email platform for AI agents. Install the SDK and initialize the client.

Installation

# TypeScript/Nodenpm install agentmail# Pythonpip install agentmail

Setup

import { AgentMailClient } from "agentmail";const client = new AgentMailClient({ apiKey: "YOUR_API_KEY" });
from agentmail import AgentMailclient = AgentMail(api_key="YOUR_API_KEY")

Inboxes

Create scalable inboxes on-demand. Each inbox has a unique email address.

// Create inbox (auto-generated address)const autoInbox = await client.inboxes.create();// Create with custom username and domainconst customInbox = await client.inboxes.create({  username: "support",  domain: "yourdomain.com",});// List, get, deleteconst inboxes = await client.inboxes.list();const fetchedInbox = await client.inboxes.get("[email protected]");await client.inboxes.delete("[email protected]");
# Create inbox (auto-generated address)inbox = client.inboxes.create()# Create with custom username and domainfrom agentmail.inboxes.types import CreateInboxRequestinbox = client.inboxes.create(    request=CreateInboxRequest(username="support", domain="yourdomain.com"),)# List, get, deleteinboxes = client.inboxes.list()inbox = client.inboxes.get(inbox_id="[email protected]")client.inboxes.delete(inbox_id="[email protected]")

Messages

Always send both text and html for best deliverability.

// Send messageawait client.inboxes.messages.send("[email protected]", {  to: "[email protected]",  subject: "Hello",  text: "Plain text version",  html: "<p>HTML version</p>",  labels: ["outreach"],});// Reply to messageawait client.inboxes.messages.reply("[email protected]", "msg_123", {  text: "Thanks for your email!",});// List and get messagesconst messages = await client.inboxes.messages.list("[email protected]");const message = await client.inboxes.messages.get("[email protected]", "msg_123");// Update labelsawait client.inboxes.messages.update("[email protected]", "msg_123", {  addLabels: ["replied"],  removeLabels: ["unreplied"],});
# Send messageclient.inboxes.messages.send(    inbox_id="[email protected]",    to="[email protected]",    subject="Hello",    text="Plain text version",    html="<p>HTML version</p>",    labels=["outreach"])# Reply to messageclient.inboxes.messages.reply(    inbox_id="[email protected]",    message_id="msg_123",    text="Thanks for your email!")# List and get messagesmessages = client.inboxes.messages.list(inbox_id="[email protected]")message = client.inboxes.messages.get(inbox_id="[email protected]", message_id="msg_123")# Update labelsclient.inboxes.messages.update(    inbox_id="[email protected]",    message_id="msg_123",    add_labels=["replied"],    remove_labels=["unreplied"])

Threads

Threads group related messages in a conversation.

// List threads (with optional label filter)const threads = await client.inboxes.threads.list("[email protected]", {  labels: ["unreplied"],});// Get thread detailsconst thread = await client.inboxes.threads.get("[email protected]", "thd_123");// Org-wide thread listingconst allThreads = await client.threads.list();
# List threads (with optional label filter)threads = client.inboxes.threads.list(inbox_id="[email protected]", labels=["unreplied"])# Get thread detailsthread = client.inboxes.threads.get(inbox_id="[email protected]", thread_id="thd_123")# Org-wide thread listingall_threads = client.threads.list()

Attachments

Send attachments with Base64 encoding. Retrieve from messages or threads.

// Send with attachmentconst content = Buffer.from(fileBytes).toString("base64");await client.inboxes.messages.send("[email protected]", {  to: "[email protected]",  subject: "Report",  text: "See attached.",  attachments: [    { content, filename: "report.pdf", contentType: "application/pdf" },  ],});// Get attachmentconst fileData = await client.inboxes.messages.getAttachment(  "[email protected]",  "msg_123",  "att_456",);
import base64# Send with attachmentcontent = base64.b64encode(file_bytes).decode()client.inboxes.messages.send(    inbox_id="[email protected]",    to="[email protected]",    subject="Report",    text="See attached.",    attachments=[{"content": content, "filename": "report.pdf", "content_type": "application/pdf"}])# Get attachmentfile_data = client.inboxes.messages.get_attachment(    inbox_id="[email protected]",    message_id="msg_123",    attachment_id="att_456")

Drafts

Create drafts for human-in-the-loop approval before sending.

// Create draftconst draft = await client.inboxes.drafts.create("[email protected]", {  to: "[email protected]",  subject: "Pending approval",  text: "Draft content",});// Send draft (converts to message)await client.inboxes.drafts.send("[email protected]", draft.draftId, {});
# Create draftdraft = client.inboxes.drafts.create(    inbox_id="[email protected]",    to="[email protected]",    subject="Pending approval",    text="Draft content")# Send draft (converts to message)client.inboxes.drafts.send(inbox_id="[email protected]", draft_id=draft.draft_id)

Pods

Multi-tenant isolation for SaaS platforms. Each customer gets isolated inboxes.

// Create pod for a customerconst pod = await client.pods.create({ clientId: "customer_123" });// Create inbox within podconst inbox = await client.pods.inboxes.create(pod.podId, {});// List inboxes scoped to podconst inboxes = await client.pods.inboxes.list(pod.podId);
# Create pod for a customerpod = client.pods.create(client_id="customer_123")# Create inbox within pod (pods.inboxes.create accepts flat kwargs)inbox = client.pods.inboxes.create(pod_id=pod.pod_id)# List inboxes scoped to podinboxes = client.pods.inboxes.list(pod_id=pod.pod_id)

Idempotency

Use clientId for safe retries on create operations.

const inbox = await client.inboxes.create({  clientId: "unique-idempotency-key",});// Retrying with same clientId returns the original inbox, not a duplicate
from agentmail.inboxes.types import CreateInboxRequestinbox = client.inboxes.create(    request=CreateInboxRequest(client_id="unique-idempotency-key"),)# Retrying with same client_id returns the original inbox, not a duplicate

Real-Time Events

For real-time notifications, see the reference files:

  • webhooks.md - HTTP-based notifications (requires public URL)
  • websockets.md - Persistent connection (no public URL needed)

agentmail 설치

스킬 파일을 다운로드하여 .claude/skills/ 디렉터리에 압축을 풀어주세요.

ZIP 다운로드

저장소를 클론하고 스킬 파일을 프로젝트에 복사하세요.

git clone https://github.com/agentmail-to/agentmail-skills/blob/main/agentmail/SKILL.md # Copy SKILL.md to your .claude/skills/ directory

복사 복사
빠른 설정: skill 폴더를 .claude/skills/로 복사하면 Claude가 해당 스킬을 자동으로 감지하여 사용합니다.

관련 스킬

web-search
업데이트 된 시간 2026년 6월 29일
webapp-testing
업데이트 된 시간 2026년 6월 29일
lark-base
업데이트 된 시간 2026년 7월 5일
computer-use
업데이트 된 시간 2026년 7월 29일
OR