agentmail
agentmail-to/agentmail-skills
Attribuez à vos agents IA leurs propres boîtes de réception grâce à l'API AgentMail. Utilisez-la pour créer des agents de messagerie, envoyer et recevoir des e-mails par programmation, gérer des boîtes de réception, traiter des pièces jointes, organiser les messages à l'aide de libellés, créer des brouillons à valider par un humain ou configurer des notifications en temps réel via des webhooks ou des websockets. Prend en charge l'isolation multi-locataires grâce aux pods.
...Développer toutÀ propos agentmail
AgentMail est une plateforme de messagerie électronique axée sur les API, spécialement conçue pour les agents IA. Elle offre des fonctionnalités de messagerie programmables via un SDK convivial pour les développeurs. Elle résout le défi consistant à doter les agents IA de leurs propres identités de messagerie et de la capacité d’envoyer, de recevoir et de gérer de manière autonome leurs communications par e-mail. Au lieu de mettre en place une infrastructure de messagerie complexe à partir de zéro, les développeurs peuvent rapidement créer des boîtes de réception pour leurs agents IA et intégrer des fonctionnalités de messagerie dans leurs applications en quelques lignes de code seulement.
La plateforme offre des fonctionnalités complètes de gestion des e-mails, notamment la création à la demande et évolutive de boîtes de réception avec des adresses e-mail générées automatiquement ou personnalisées, la gestion complète du cycle de vie des messages avec des capacités d’envoi et de réponse, le regroupement des conversations par fils de discussion, l’organisation par libellés et la gestion des pièces jointes. Elle prend en charge les formats d’e-mails en texte brut et HTML pour une délivrabilité optimale, et inclut des capacités de notification en temps réel via des webhooks et des websockets. Le SDK est disponible pour les environnements TypeScript/Node.js et Python, offrant des API cohérentes dans les deux langages.
AgentMail est idéal pour les développeurs qui créent des agents de messagerie basés sur l’IA, des systèmes d’automatisation du service client, des outils de prospection et de communication, ou toute application nécessitant des capacités de messagerie programmables. Il prend en charge les architectures multi-locataires avec isolation par pod, ce qui le rend adapté aux applications SaaS où plusieurs agents ou clients ont besoin d’environnements de messagerie distincts. Que vous développiez un assistant IA chargé de surveiller une boîte de réception, un système de suivi automatisé ou un workflow de validation de brouillons dans lequel l’IA prépare des e-mails en vue d’une révision humaine, AgentMail fournit l’infrastructure et les API nécessaires pour gérer efficacement ces cas d’utilisation.
FAQ
Quels langages de programmation AgentMail prend-il en charge ?
AgentMail [email protected] propose une prise en charge officielle des SDK pour TypeScript/Node.js et Python. Ces deux SDK offrent les mêmes fonctionnalités de base pour la gestion des boîtes de réception, l’envoi et la réception de messages, l’organisation à l’aide de libellés et la gestion des fils de discussion.
Puis-je utiliser des domaines de messagerie personnalisés avec AgentMail?
Oui, vous pouvez créer des boîtes de réception avec des noms d’utilisateur et des domaines personnalisés lors de la création d’une boîte de réception. Si vous ne spécifiez pas de paramètres personnalisés, AgentMail générera automatiquement une adresse e-mail pour vous en utilisant le domaine par défaut agentmail.to.
Comment AgentMail organise-t-il les conversations par e-mail ?
AgentMail [email protected] utilise des fils de discussion pour regrouper les messages liés au sein d’une conversation, à l’instar des clients de messagerie modernes. Vous pouvez afficher la liste des fils de discussion, les filtrer par libellés et récupérer tous les messages d’un fil. De plus, vous pouvez organiser vos messages à l’aide de libellés personnalisés pour une catégorisation flexible.
Dois-je envoyer à la fois des versions en texte brut et en HTML de mes e-mails ?
Oui, AgentMail recommande de toujours envoyer à la fois une version texte et une version HTML de vos messages pour une délivrabilité optimale. Cela garantit la compatibilité avec différents clients de messagerie et améliore les chances que vos e-mails soient délivrés avec succès.
AgentMail prend-il en charge les notifications en temps réel ?
Oui, AgentMail prend en charge les notifications en temps réel via des webhooks et des websockets, ce qui permet à votre application d’être immédiatement informée lorsque de nouveaux messages arrivent ou que d’autres événements se produisent dans la boîte de réception de votre agent.
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)
Tous les fichiers
3 fichiersInstaller agentmail
Téléchargez et décompressez les fichiers de compétences dans votre répertoire .claude/skills/.
Télécharger le ZIPClonez le dépôt et copiez les fichiers de compétence dans votre projet.
git clone https://github.com/agentmail-to/agentmail-skills/blob/main/agentmail/SKILL.md # Copy SKILL.md to your .claude/skills/ directory
Copier





Maison
