Skip to content
NEWMCP server for Claude Code, Cursor and other AI agents

Send test emails.
Nobody receives them.

MailBench is a testing SMTP inbox for developers and QA. Connect your staging and CI environments to capture and inspect every email, without accidentally sending messages to real customers. Your AI coding agent can check them too, over MCP.

Free plan included, no credit card. Paid plans from $15/month. See pricing.

Try it with your own app

Get a real MailBench inbox for the next hour. Send it an email from your code or a one-line command and watch it land here, live.

Lasts 60 minutes. Up to 25 messages. No account, no card.

Swap four lines and you're done

Keep your mailer as it is, or move over from another sandbox. Change the SMTP credentials in your staging environment and every message lands in MailBench instead.

1

Create an inbox

Sign up and add a project. Copy its SMTP credentials.

2

Swap the credentials

Update your staging and CI environment variables. Your mailer code stays the same. Sending through SendGrid, Mailgun, Postmark or Resend? Change the SDK's base URL instead.

3

Send a test email

It appears in your MailBench inbox instead of anyone's real mailbox.

Laravel: .env

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailbench.dev
MAIL_PORT=587
MAIL_USERNAME=your-inbox-user
MAIL_PASSWORD=your-inbox-pass
MAIL_ENCRYPTION=tls

Node.js: mailer.ts (Nodemailer, works in Next.js route handlers and server actions)

import nodemailer from 'nodemailer';

export const transport = nodemailer.createTransport({
  host: process.env.SMTP_HOST,      // smtp.mailbench.dev
  port: Number(process.env.SMTP_PORT ?? 587),
  secure: false,                    // STARTTLS on 587; use true with port 465
  auth: {
    user: process.env.SMTP_USER,    // your-inbox-user
    pass: process.env.SMTP_PASS,    // your-inbox-pass
  },
});

Rails: config/environments/staging.rb

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address: 'smtp.mailbench.dev',
  port: 587,
  user_name: ENV['SMTP_USER'],   # your-inbox-user
  password: ENV['SMTP_PASS'],    # your-inbox-pass
  authentication: :plain,
  enable_starttls_auto: true
}

Django: settings.py

import os

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.mailbench.dev'
EMAIL_PORT = 587
EMAIL_USE_TLS = True  # STARTTLS
EMAIL_HOST_USER = os.environ['SMTP_USER']      # your-inbox-user
EMAIL_HOST_PASSWORD = os.environ['SMTP_PASS']  # your-inbox-pass

Plain SMTP

Host:      smtp.mailbench.dev
Ports:     587 (STARTTLS), 465 (TLS), 2525 (STARTTLS, if 587 is blocked)
Username:  your-inbox-user
Password:  your-inbox-pass
Auth:      PLAIN or LOGIN

More frameworks and a curl test on the integrations page

Works with: Laravel, Node.js, Django, Rails, GitHub Actions, GitLab CI, anything that speaks SMTP, and the SendGrid, Mailgun, Postmark and Resend SDKs.

Everything you check before an email ships

Testing SMTP inbox

A private inbox per project. Messages are captured and never delivered.

Every view

Switch between rendered HTML, plain text, raw source, and full headers.

HTML, link and spam checks

Catch broken HTML, dead links and spam triggers before an email ships.

Teams and roles

Separate inboxes for dev, staging, and QA, shared with your team by role.

MCP for AI agents

Let Claude Code, Cursor or any MCP client create an inbox, wait for your app’s email and follow its links.

REST API and webhooks for CI

Wait for the next email in your test suite and assert on it, or get a webhook the moment one lands.

Pricing you can read in one glance

You pay for a monthly or yearly subscription to the hosted service. Every plan includes the SMTP inbox, dashboard, email checks, REST API and MCP; Pro and Team lift the API's daily cap and add more mail, retention and webhooks.

Free

For trying it out and side projects.

$0

Free forever

  • 2,500 emails per month
  • 7-day retention
  • Up to 5 team members
  • REST API and MCP for AI agents, 1,000 requests a day
  • 1 webhook
Start free
Most popular

Pro

For a product team with staging and CI.

$15/month

Billed monthly, or $144/year billed yearly

  • 50,000 emails per month
  • 30-day retention
  • Up to 15 team members
  • REST API and MCP for AI agents, 30 requests per second
  • 10 webhooks
Buy Pro

Team

For busy test suites and several teams.

$49/month

Billed monthly, or $468/year billed yearly

  • 250,000 emails per month
  • 90-day retention
  • Unlimited team members
  • REST API and MCP for AI agents, 100 requests per second
  • Unlimited webhooks
Buy Team

Prices in USD, taxes added at checkout. Payments are handled by Paddle, our merchant of record.

Compare plans and read the pricing FAQ

Safe for the data you test with

Never delivered

Captured messages are stored for you to inspect and are never sent onward.

Retention by plan

Messages are deleted after 7, 30 or 90 days, depending on your plan.

GDPR

Data processing agreement available on request at hello@ivivelabs.com.

Data location

Customer data is hosted in Germany (EU).

Questions people ask first

Is it safe to use with production data?

Use it with test data whenever you can. MailBench never delivers messages onward, and captured messages are deleted when your plan's retention period ends.

Do emails ever get delivered?

No. Every message stops in your MailBench inbox. There is no setting that forwards mail to real recipients.

Can I switch from another email sandbox?

Yes. Replace your SMTP host, port, username, and password. Nothing else in your app changes.

What are the limits, and how do I get support?

Limits for each plan are on the pricing page. For help, email support@mailbench.dev.

Stop emailing real users from staging

Create a free inbox, point your staging environment at it, and see every email your app sends.