Most people who land on TempsMail want to dodge a newsletter. Developers are the one group that shows up with a plan: they're testing a signup flow and they need twenty throwaway addresses before lunch.
We like these users. They're also the ones who hit the edges of the service fastest, so this is the page we wish they'd read first — what a disposable inbox is genuinely good for in a test suite, and the three places it will quietly waste your afternoon.
"Does registration work" is not one test. When a signup flow breaks in production, it's almost always one of these, and every one of them needs a real inbox to catch.
localhost or a staging host, shipped to production. The email looks perfect. The link 404s.None of that shows up in a unit test with a mocked mailer. You need something that actually receives.
For the polling step, it helps to know the pattern we described for pulling one-time codes out of a temporary inbox — it's the same shape, just automated.
Three cases. We'd rather tell you now than have you debug our service instead of yours.
Deliverability testing. If the question is "will this land in the inbox or in spam at Gmail", we can't answer it. We're a catch-all. We don't score SPF, DKIM or DMARC alignment the way a consumer provider does, and we don't produce a spam report. Use a tool built for that, or send to real mailboxes you control at the providers your users actually use.
Load testing. Please don't. Signup flow benchmarks that fire thousands of registrations will hit our rate limits, and rightly so — the limits are what stops the service being used to mass-create accounts somewhere else. For load tests, mock the mailer. You're measuring your app, not our inbox.
Long-lived fixtures. A seeded test account that your suite expects to still exist next sprint should not live here. Messages rotate out and addresses aren't permanent. Fixtures need a mailbox you own, ideally with sub-addressing so one real account gives you [email protected], [email protected] and so on, forever.
Scraping our web page in a test is fragile and we'll eventually change the markup under you. There's a documented API instead: create an address, get back a key bound to that address, then read messages with it. Details are on the API page, and you generate your own key from API access after signing in.
Two design choices worth knowing before you build against it.
It is receive-only. You cannot send from a TempsMail address, and that's deliberate — an open service that could send would be a spam relay within hours. If your test needs to verify an outbound reply, that's a different tool.
Reads are bound to whoever created the address, by IP and fingerprint, with a token. It stops a stranger reading an inbox just by guessing the address. In practice this means your test runner should create and read from the same place — a flaky suite that creates on CI and reads from a developer laptop will get a 401, and the 401 is correct.
Three habits that make the difference between a test that runs for a year and one that goes red next Tuesday.
Poll with backoff, and set a real timeout. Mail takes a second or two. A tight loop with no ceiling turns one slow delivery into a hung pipeline.
Treat a missing message as a failure of your app first. Nine times out of ten an empty inbox means your queue isn't running in CI, not that we lost the mail.
Generate a fresh address per test, never share one. Shared addresses across parallel runs is how you get a test reading another test's confirmation link and passing for the wrong reason.
No. The API needs a key from a verified account, which is a deliberate change from how it used to work. Anonymous automated access is exactly the pattern that gets abused, so the key is what lets us keep the service open for everyone else.
Enough for a normal test suite, not enough for a load test — address creation is rate limited separately and more tightly than reading. If a legitimate pipeline is hitting the ceiling, tell us what you're doing rather than working around it.
You can choose the local part on the site. For automated tests, taking whatever the API hands you is more robust anyway — a hardcoded address is a collision waiting to happen when two branches build at once.
Not long, and by design. Assert on the message in the same test that triggered it. Anything you want to keep, extract and store on your side before the test ends.
That's the whole shape of it: disposable inboxes are great for proving an email actually arrived and actually worked, and wrong for anything that needs to still be there tomorrow. If you're new to the service, how to get a temp mail covers the basics first.