Skip to main content

Email Testing Should Be as Easy as Unit Testing

· 6 min read
Founder, mailbot

Every other part of your application has tests. Your API endpoints have integration tests. Your database queries have unit tests. Your business logic has coverage reports. But email? You deploy, open Gmail, trigger a password reset, and squint at the inbox. That is not testing. That is hoping.

The worst part is that nobody calls it out. Teams celebrate 90% code coverage and ship welcome emails they have never once verified in an automated test.

The $6M Question: Can You Build Email Infra Without an MTA?

· 5 min read
Founder, mailbot

A YC S25 company just raised $6 million to build email infrastructure for AI agents. General Catalyst led the round. Paul Graham backed it. The company is called AgentMail. They have 500+ B2B customers and a clear thesis: agents need email like humans need Gmail.

That thesis is right. The question is what "email infrastructure" actually means.

We Run Our Own Support on Our Own API

· 5 min read
Founder, mailbot

A support ticket comes in. An AI agent reads it, classifies it, drafts a reply with full context, and sends it back. The entire loop runs on the same API we ship to developers.

This is not a demo. This is how we handle support at mailbot, every day, on our own infrastructure.

The Case for Email-Native Observability

· 5 min read
Founder, mailbot

Your email API says "delivered." Your user says they never got it. You check the dashboard. It shows a green checkmark. The user checks their spam folder. Nothing there either.

Somewhere between your API call and the recipient's mailbox, the message vanished. And you have no way to trace where it went.

Your Email API Doesn't Have an Opinion About Deliverability

· 6 min read
Founder, mailbot

Your agent sends a password reset. The user never gets it. You check the logs. "Sent," they say. That's it. No bounce reason. No retry trace. No idea whether the message hit the inbox, landed in spam, or disappeared into the void.

You didn't have a sending problem. You had a deliverability problem. And your email API had nothing to say about it.

You Treat Every Email the Same. Your Users Don't.

· 5 min read
Founder, mailbot

A user requests a password reset. Your system queues the email. It sits behind forty-seven marketing messages from a batch job that started two minutes earlier. The password reset email arrives ninety minutes later. The user has already given up and contacted support.

Your system treated the password reset the same as a promotional newsletter. Your user did not.

The Email Your User Never Told You About

· 6 min read
Founder, mailbot

A user tries to sign up. Your app sends a confirmation email. The email never arrives.

The user does not contact support. They do not tweet about it. They do not leave a review. They close the tab, try a competitor, and forget your product existed.

You will never know this happened.

You Wrote a Retry Loop. Now You Maintain a Mail Server.

· 7 min read
Co-founder, mailbot

You added email to your app. It was supposed to be simple. Send a request, get a 200, move on. Then an email bounced. So you added a retry. Then retries started piling up, so you added a queue. Then the queue needed backoff logic, deduplication, and failure routing. Now you are three abstractions deep into a problem that was never yours to solve.

Your Automated Emails Look Like They Came from a Stranger

· 5 min read
Founder, mailbot

A customer receives an order confirmation from noreply@mail-provider-247.net. The next day, a shipping update arrives from notifications@yourapp.com. A week later, a feedback request comes from marketing@company.io.

Three emails. Three different sender identities. The customer does not recognize any of them as your product.

Every Bounce Is a Mystery You Can't Solve

· 5 min read
Founder, mailbot

An email bounces. Your system logs it: 550 5.1.1 User unknown. You stare at the log entry. The address looks correct. The user signed up yesterday. What happened?

You check the provider dashboard. It says "bounced." You already knew that. It does not say why, what changed, or what to do next.

So you do the only thing you can. You try again tomorrow and hope it works.