Notes on email, agents, and the space in between.
Tutorials, protocol deep-dives, and product updates from the team.
Your agent can't tell who sent that email
The From line is a claim, not a fact - and a support agent that trusts it will hand order data and refunds to anyone who types the right name. How e2a attaches SPF, DKIM, and aligned DMARC evidence to every inbound message (header_from, envelope_from, verified_domain) so agents route on proof instead of text.
Anyone in the world can put text in front of your agent's model for the price of an email
Inbound email is untrusted input the whole internet can write - and a prime indirect prompt-injection vector for agents that act on what they read. How e2a screens message content (heuristics + optional LLM detector, allow / review / block, fail-safe to review) before your agent ever sees it.
Your agent's inbox is storage, not transport
An agent that polls its inbox every 30 minutes is checking a PO box. Inbound mail should push to the agent wherever it runs - signed webhooks, WebSocket with no public URL, REST polling, and MCP - without a deployment project first.
Your approval gate shouldn't live in your agent's code
Most teams put the human-approval checkpoint in their own application code, where it only holds for the code paths that remember to call it. Where the gate should live instead: the email API boundary.
Build a procurement agent that coordinates with vendors
Connect vendor email to purchase-order context, extract updates, follow up on missing information, and hold commitments for human approval.
Build a voice follow-up agent with email
Turn a completed voice call into an authenticated email follow-up, receive replies, preserve call context, and route commitments through approval.
Build a recruiting agent that coordinates candidates by email
Connect a recruiting agent to candidate email, ATS and calendar context, interview coordination, and human approval for high-impact messages.
Build a sales follow-up agent with authenticated email
Give a sales agent its own inbox, connect replies to CRM context, send personalized follow-ups, and add a human approval step for sensitive outreach.
Build an e-commerce agent that handles order email
Connect an AI agent to customer order email: look up order context, answer delivery questions, keep replies threaded, and hold refunds for human approval.
Give your Google ADK agent an email inbox (with conversation memory)
Wire a Google Agent Development Kit agent to a real email address. HMAC-verified webhooks, multi-turn memory across email replies via the conversation_id ↔ ADK session_id binding, ~30 lines of business logic. Full runnable example included.
Human-in-the-loop: approve before your agent hits send
Per-agent approval for outbound AI email. Flip one switch; the next time your agent tries to send, you get a notification with approve / reject buttons. Review in the dashboard, CLI, or straight from your inbox.
Give your OpenClaw agent an email address (with real-time WebSocket delivery)
OpenClaw runs locally, so by default it has no public inbox. This tutorial wires it to a real email address via e2a — WebSocket delivery, no public URL, under 5 minutes.
Send real email from a Python AI agent in 20 lines
A minimal walkthrough: give your Python agent an email address, send verified mail, receive replies via webhook or WebSocket, and thread the whole conversation.