Our recommendation, up front. We make Proxy Mail QA, so we’re not neutral. For testing a registration form, we recommend it when you need a new, real email address for every try, sent to through your app’s actual email provider, and you want the verification code or link without digging through your own inbox. If you only want to see the emails your app sends while you develop on your own machine, without them going anywhere, a local mail catcher such as Mailpit, or Mailtrap’s testing inbox, fits better. If you need SMS codes as well, look at Mailosaur or MailSlurp. Proxy Mail QA is email only, and its addresses expire after 1 to 30 days, so it isn’t for accounts you mean to keep.
Why each try needs a new address
- A registration works once per address. The second try with the same address tests “You already have an account”, not registration.
- Shared inboxes mix codes. When two people or two tests use one inbox, one picks up the other’s code, and the test fails for no reason in your app.
- Your own address isn’t test data. It mixes test mail with real mail, can’t be handed to a teammate or a test suite, and ends up in your app’s database as a fake customer.
The options, honestly
| Option | Good for | Watch out for |
|---|---|---|
Your own Gmail with plus tags (you+test1@gmail.com) |
One or two quick checks | Every try lands in your personal inbox. Some forms refuse plus tags. Hard to automate |
| A shared team inbox | A handful of manual checks | Codes from different tests mix. Why that breaks tests |
| A local mail catcher (Mailpit) or Mailtrap’s testing inbox | Seeing your app’s emails during development, without sending them | Mail never goes through your real provider, so sandbox mode, SPF, DKIM and DMARC aren’t tested. Your app has to be pointed at it |
| Public throwaway inbox sites | Nothing in a real project | Anyone can read the inbox, and many forms block their domains |
| Proxy Mail QA | A new private address for each try, on staging or locally, by hand or from a test or an agent | Email only. Your provider must be out of sandbox mode. Addresses expire |
What Proxy Mail QA gives you
- A new address in one click, in the app, from Proxy Mail QA for Chrome in the form’s email field, or from the API, the npm package or an AI agent. Addresses are on
mailclub.dev. If a form blocks that domain, useenable.liorvalida.te.it. - A test persona to go with it: a fictional first and last name, a username, a date of birth for the age you choose, a country, and a password if you ask for one.
- The code or link, pulled out. It shows on the address’s row in the app, in a card on the page with the extension, or comes back from
wait_for_codeandwait_for_link. Proxy Mail QA never opens links, so single-use links stay valid. - Private and receive-only. Nobody outside your project can read the inbox, and it can’t send. When an address expires, mail to it is refused, everything is deleted within an hour, and the name is never used again.
- Checks on the email (
check_email): SPF, DKIM and DMARC, links tolocalhostor plainhttp, where the link goes, whether it says when it expires, and a plain-text part.
Testing the email field itself
Every address comes with variants that still land in its inbox, so you can check your form doesn’t refuse valid addresses:
| Your form should | Examples |
|---|---|
| Accept, and the email arrives | Capitals, +signup, +o'brien, +r&d, +team/50%, the 64-character maximum before the @ |
| Accept, though no inbox can take them | "john doe"@mailclub.dev, josé@mailclub.dev (useful for checking what your app does when delivery fails) |
| Refuse before sending anything | No @, two @ signs, a space, two dots in a row |
Get them with get_address_variants from an agent, GET /v1/addresses/{address}/variants from the REST API, or qa.variants(address) in a test. The full list is in unusual email addresses. To check a form accepts a domain with three parts, make the address on valida.te.it.
When the email doesn’t arrive
Usually it’s the sending side, not the form:
- The email provider is in sandbox or test mode and only sends to addresses you’ve verified: Amazon SES before production access, Resend without a verified domain, a Mailgun sandbox, Postmark before approval, or Supabase’s built-in email, which only sends to your team, and only 2 emails an hour.
- The mail was refused, for example for failing DMARC. The address’s row shows mail Proxy Mail QA refused, with the reason, and
check_deliveryexplains the likely cause. - It’s from a blocked site. Mail from a few big consumer services, such as Google, Instagram and Amazon, is refused: Proxy Mail QA is for testing your own app.
The email-delivery-troubleshooting skill in the Proxy Mail QA plugin for Qoder goes through these with your agent and fixes the cause. More in troubleshooting.
What it costs
Free covers 500 addresses in total (up to 50 a day) and about 500 incoming emails a day, with the extension, the API and the MCP server included. Team is US$5 a month for a whole organisation, with no address limit.
What it isn’t for
- Accounts you mean to keep. Addresses last 1 to 30 days.
- Real people’s data. Test personas are fictional; keep it that way.
- Your own domain. Receiving at an address on your company’s domain isn’t available yet.
- Sending email, or SMS. It only receives email.