TRANSACTIONAL EMAIL

The reset code should already be in their inbox

Receipts, password resets, OTPs, order confirmations — the mail people wait on with their finger on the refresh button. mailstein sends it from your own server and IP, fully authenticated, straight to the inbox. One API call, no per-contact tax, no shared-pool roulette.

Built for the mail that can't wait

Transactional email is a promise: the second someone clicks "send code" or checks out, the message is already on its way. mailstein is engineered around that promise — speed, authentication, and deliverability, on infrastructure you actually own.

01 / SPEED

Handed to the MTA on submit

Your API call returns fast and the message enters the Postal queue immediately — no batching window, no cross-tenant backlog ahead of your OTP. Time-sensitive mail is treated as time-sensitive mail.

02 / AUTH

SPF, DKIM, DMARC on by default

Every domain you add is aligned automatically. mailstein generates the records, signs each message, and keeps DMARC passing — so a reset email is provably you, not a spoof the inbox provider quietly buries.

03 / REPUTATION

Your IP, your sending history

Dedicated IPs with managed warm-up mean your deliverability is yours — not dragged down by a stranger three tenants over in a shared SES pool. Bounces and complaints are suppressed automatically before they cost you.

One call. The rest is handled.

REST API + SDK

Send in the language you already write

Fire a receipt or an OTP with a single request over the REST API, the SDK, SMTP, or the CLI. mailstein signs it, routes it through your Postal MTA, applies suppressions, and streams every open, delivery, bounce, and complaint back to your webhooks — with full message logs living on your servers, not a vendor's.

// password reset — delivered, signed, logged await mailstein.emails.send({ from: "security@yourapp.com", to: "user@example.com", subject: "Your reset code", template: "password-reset", data: { code: "482913", expires_in: "10m" } })

Why teams move transactional to mailstein

NEVER PER CONTACT

Billed per send, full stop

A password reset is one email whether the user is on your list or not. mailstein charges for the send — never for the contact, never for a marketing "audience" you don't have. Transactional and broadcast live on the same platform and the same per-send meter.

Free tier is 50 emails/mo on 1 domain with no card. Scale up only as your volume does.
FAILURE IS OBSERVABLE

Know exactly what happened to every message

Delivered, deferred, bounced, complained — each event is logged, queryable, and pushed to your webhooks in real time. When a customer swears the OTP never arrived, you can see the truth instead of guessing at a black box.

Hard bounces and complaints auto-suppress, so a bad address can't quietly wreck your IP reputation.

Put the code in the inbox, not the spam folder

Self-hosted transactional email on your own IP — authenticated, observable, and billed per send. Start free with 50 emails a month and one domain. No card.

Start free