Transactional email your business can't afford to lose.
MailEnv is the Amazon SES send API for the messages that have to arrive: password resets, one-time codes, receipts, and security alerts. Authentication, suppression, and reputation guardrails are on by default.
- SPF, DKIM & DMARC set up for you
- Suppression on by default
- Every sender vetted
curl https://api.mailenv.com/v1/send \ -H "Authorization: Bearer $MAILENV_KEY" \ -d '{ "from": "security@acme.com", "to": ["dana@example.com"], "subject": "Your sign-in code: 482 913", "tags": ["otp", "auth"] }'
- Accepted202 · queued for delivery
- Recipient checkedvalid · not suppressed
- AuthenticatedDKIM d=acme.com · DMARC aligned
- Deliveredgmail.com · 250 2.0.0 OK
A transactional email API for Amazon SES, minus the boilerplate.
The SDK call is only the start. You also own the credentials, the suppression table it checks, the configuration set that feeds SNS, and the error handling for when AWS throttles or pauses you. MailEnv is one request.
Raw Amazon SES · @aws-sdk/client-sesv2
import { SESv2Client, SendEmailCommand } from '@aws-sdk/client-sesv2'; import { isSuppressed } from './suppression'; // you build this const ses = new SESv2Client({ region: 'us-east-1', credentials: { accessKeyId: process.env.AWS_ACCESS_KEY_ID, secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY, }, }); // Your table, fed by SNS bounce and complaint notifications if (await isSuppressed(to)) return; try { await ses.send(new SendEmailCommand({ FromEmailAddress: 'billing@acme.com', Destination: { ToAddresses: [to] }, Content: { Simple: { Subject: { Data: subject, Charset: 'UTF-8' }, Body: { Html: { Data: html, Charset: 'UTF-8' }, Text: { Data: text, Charset: 'UTF-8' }, }, }, }, // Set up separately, with SNS event destinations ConfigurationSetName: 'transactional-events', EmailTags: [{ Name: 'type', Value: 'receipt' }], })); } catch (err) { if (err.name === 'TooManyRequestsException') /* back off, retry */; if (err.name === 'SendingPausedException') /* page someone */; throw err; }
MailEnv · one REST call
await fetch('https://pub-api.mailenv.com/api/v1/send-mail', { method: 'POST', headers: { Authorization: API_KEY, 'Content-Type': 'application/json' }, body: JSON.stringify({ to, from, subject, message, email_type: 'tx' }), }); // Suppression, throttling, and bounce handling // run on MailEnv's side.
- No AWS credentials in your app or your CI secrets.
- No suppression table to build. Bad addresses are blocked before they reach SES.
- No SNS plumbing. Events arrive as signed webhooks.
When this email doesn't arrive, your customer can't log in, pay, or act.
Marketing platforms are built to send more email. MailEnv is built so the messages your product depends on reach the inbox every time.
Sign-in codes & 2FA
One-time passcodes and magic links that land in seconds, while the code is still valid.
Password resets & verification
Account recovery and email confirmation that don't get stuck behind a spam filter.
Receipts, invoices & statements
Payment confirmations and billing documents your customers and auditors expect to find.
Security & fraud alerts
New-device sign-ins, password changes, and suspicious activity, delivered while they matter.
System & account notices
Order updates, usage limits, outage notices, and approvals that keep operations moving.
Legal & policy notices
Terms updates, privacy notices, and required disclosures, with a delivery record for each.
Your domain's reputation is a business asset. We treat it like one.
Mailbox providers judge every message by the history of the domain that sent it. One bad import or runaway loop can push password resets into spam for weeks. MailEnv watches the signals and steps in first.
- Authentication done right. SPF, DKIM, and DMARC set up and aligned on your domain, then checked continuously.
- Thresholds enforced, not just reported. Sending is throttled or paused before bounce and complaint rates reach provider limits.
- Bad addresses never get a second chance. Hard bounces and complaints are suppressed across every send.
Everything you'd build around SES, already running.
Raw SES hands you a sending endpoint and leaves the rest to you. MailEnv adds the operational layer that keeps critical mail flowing.
Pre-send verification
Invalid, disposable, and risky addresses are caught before they bounce and count against you.
Automatic suppression
Hard bounces, complaints, and unsubscribes are blocked across every future send, with no code on your side.
Throttling & warmup
Volume ramps on a schedule mailbox providers trust. Sudden spikes are smoothed instead of flagged.
Isolated environments
Keep transactional traffic away from bulk sends. Dedicated plans run on private IPs and isolated infrastructure.
Signed webhooks
Delivery, bounce, and complaint events pushed to your stack in real time, signed so you can verify the source.
Message history
A per-message event trail showing when it was accepted, delivered, or bounced, and why.
One webhook URL instead of an SNS pipeline.
To get delivery events out of raw SES, you build a small system around them. With MailEnv, you give us one HTTPS endpoint and get clean, signed events.
With raw Amazon SES
- Create a configuration set and SNS event destinations for each event type.
- Create SNS topics, subscribe your endpoint, and confirm the subscription handshake.
- Verify each SNS message signature against the AWS signing certificate.
- Parse an SNS envelope whose
Messagefield is another JSON document encoded as a string. - Map SES bounce types and subtypes to your own suppression rules.
With MailEnv
- One endpoint. Give us a URL and events start arriving.
- Standardized payloads. The same clean JSON shape for every event, with no nested AWS envelope.
- Signed for verification. Confirm every event came from MailEnv.
- Suppression already applied. Hard bounces and complaints are blocked before your handler even runs.
delivered
The receiving server accepted the message.
bounced
Hard or soft bounce, with the reason. Hard bounces are suppressed automatically.
complained
The recipient marked it as spam. The address is suppressed on every future send.
Skip the Amazon SES sandbox entirely.
Every new SES account starts in a sandbox: verified recipients only, and a few hundred messages a day. Getting out means opening a support case, explaining your use case and bounce handling, and waiting. Requests can be denied.
MailEnv customers never see the sandbox. You send on our established SES infrastructure. A person reviews your account, usually within 24 to 48 hours, and we give you the exact DNS records to verify your domain.
| SES sandbox | MailEnv | |
|---|---|---|
| Recipients | Verified addresses only. | Anyone who should get your mail. |
| Daily quota | 200 messages per 24 hours. | Your plan's volume, ramped on a warmup schedule. |
| Send rate | 1 message per second. | Paced to what mailbox providers trust. |
| Getting out | A written support case to AWS, which can be denied. | An account review with a person. |
From signup to production sending, with a person in the loop.
No AWS console, no sandbox limits, no guessing at DNS records.
-
01
Tell us what you send
We review every account before it can send. That's how the network you share stays clean, and why your mail is trusted.
use_case: "auth codes, receipts" -
02
Verify your domain
We give you the exact DNS records and confirm SPF, DKIM, DMARC, and custom MAIL FROM are aligned before you go live.
_dmarc.acme.com TXT "v=DMARC1; p=quarantine" -
03
Send with one API key
One REST call, or the Node, Python, or Go SDK. Events arrive by webhook. Guardrails run on every message.
POST https://api.mailenv.com/v1/send
For teams where email is part of the product.
If a missed email means a support ticket, a lost sale, or a compliance question, MailEnv fits.
SaaS
Onboarding, auth, and billing mail that has to work on day one and at scale.
Fintech & payments
Messages tied to money, where a missing email becomes a dispute.
Health & regulated
Appointment and account notices that need a clear delivery record.
Commerce
Order flows that drive repeat purchases and cut support volume.
Agencies & platforms
Send for many clients without one client's list hurting the rest.
Built for the rules providers and regulators actually enforce.
Since 2024, Gmail and Yahoo reject or spam-folder mail that fails authentication or runs high complaint rates. Privacy and anti-spam laws add consent and unsubscribe duties on top. MailEnv builds those requirements into how you send.
Read the compliance overviewGmail & Yahoo
Authenticated, DMARC-aligned mail and complaint rates kept well under 0.3%.
CAN-SPAM & CASL
Unsubscribes honored and suppressed automatically, with consent required for marketing.
GDPR-minded data
Message data kept only as long as needed, with clear processing and retention terms.
AWS SES policies
Bounce and complaint limits enforced on your behalf, so your account stays in good standing.
Why teams move critical mail to MailEnv.
The big platforms do everything. We do one thing: make sure the email that matters gets there.
SendGrid
Hands-on onboarding and enforced guardrails instead of a self-serve platform where reputation is your problem.
Compare MailEnv vsMailgun
A focused, SES-native sender with safety rails, compared with a broad build-it-yourself email toolkit.
Compare MailEnv vsMailchimp
An API built for transactional mail, compared with a marketing suite where transactional is an add-on.
CompareWhy not just use Amazon SES directly?
You can, but you'll own sandbox approval, DNS setup, bounce and complaint handling, suppression lists, warmup, and monitoring yourself. MailEnv runs on SES and handles that operational layer, so you get SES delivery without building the parts around it.
Is MailEnv an Amazon SES wrapper?
Yes. MailEnv is a managed REST API wrapper for Amazon SES. You send with one API key, and MailEnv runs the SES side for you: domain authentication, bounce and complaint handling, suppression, and sending limits.
Why do you review accounts before they can send?
Everyone's mail is judged partly by the company it keeps. Vetting senders keeps spammers off the infrastructure your messages travel on. It's a big part of why mail sent through MailEnv is trusted.
Do I keep my own domain and reputation?
Yes. You send from your own domain with your own DKIM keys and DMARC policy. The reputation you build stays with your domain, and our guardrails are there to protect it.
Can I send marketing email too?
Yes, to subscribers who have opted in. Imported lists are verified before they can be sent to, and dedicated plans let you isolate bulk sends from transactional traffic so a campaign never slows down a password reset.
How long does onboarding take?
Most teams are reviewed within 24 to 48 hours. Domain verification usually finishes as soon as your DNS records propagate.
What happens if my bounce or complaint rate spikes?
MailEnv slows or pauses the affected sending and tells you why, before rates reach the levels where Amazon SES or mailbox providers take action against your account or domain.
Stop worrying about whether the email went out.
Get an API key, verify your domain, and send critical mail through infrastructure built to protect it.