# Zyntra > Zyntra gives software teams receive-only test inboxes. Send mail to {teamId}.{anytext}@zyntramail.com and read it back over a REST API, a Node.js SDK, a hosted MCP server or a web dashboard. It is used to test the email step of sign-up, password-reset and magic-link flows. - Any address in the form {teamId}.{anytext}@zyntramail.com accepts mail without being created first (a temporary inbox). Its mail is kept 1 day on every plan. - Inboxes created in the dashboard (permanent inboxes) use the same address format, can be read in a web viewer, and keep mail longer, depending on the plan. - Every email is returned with a `links` field: the links found in its HTML and text. - Attachments are supported. - Zyntra only receives mail; it cannot send email. ## Pages - [Email testing API](https://zyntra.app/): What Zyntra is, the inbox address format and a full request/response example. - [Pricing](https://zyntra.app/pricing): Plans, prices and limits: Free, Starter and Pro. - [Playwright email testing](https://zyntra.app/playwright-email-testing): A full Playwright test that signs up, reads the confirmation email over the API and opens its link. - [Cypress email testing](https://zyntra.app/cypress-email-testing): A full Cypress spec that reads the sign-up email with cy.request and visits its link. - [Selenium email testing](https://zyntra.app/selenium-email-testing): A full Python Selenium test that reads the sign-up email over HTTP, plus the Java read step. - [Testing email verification](https://zyntra.app/use-cases/email-verification): E2E test of the sign-up confirmation link, with a reusable fetch helper. - [Testing password reset](https://zyntra.app/use-cases/password-reset): E2E test of the password-reset email, including a second email to the same address. - [Testing magic-link login](https://zyntra.app/use-cases/magic-link): E2E test of passwordless sign-in from an emailed link. - [Testing codes sent by email](https://zyntra.app/use-cases/email-otp): E2E test that reads a one-time code from the email body with a regular expression. - [Named test inboxes for manual QA](https://zyntra.app/manual-qa): Inboxes created in the dashboard, read in a web viewer, kept 7, 30 or 90 days by plan. - [Email inbox for AI agents (MCP)](https://zyntra.app/ai-agents): The hosted MCP server: five read/delete tools, setup for Claude Code and Cursor, receive-only. - [Agentic testing with Playwright MCP](https://zyntra.app/ai-agents/agentic-testing): An agent signs up in a browser via Playwright MCP and reads the verification email via Zyntra MCP. - [Zyntra MCP for Claude](https://zyntra.app/ai-agents/claude): Setup for Claude Code (one command or .mcp.json) and for Claude Desktop/claude.ai as a custom connector. - [Zyntra MCP for Cursor](https://zyntra.app/ai-agents/cursor): Setup in Cursor's mcp.json with the API key from an environment variable. - [Zyntra vs testmail.app](https://zyntra.app/vs/testmail): Side-by-side prices, retention and features, with where each fits. - [Zyntra vs Mailosaur](https://zyntra.app/vs/mailosaur): Side-by-side prices and features, with where each fits. - [Zyntra vs Mailtrap Email Sandbox](https://zyntra.app/vs/mailtrap): Captured mail vs real delivery: how they differ and what they cost. - [Zyntra vs MailSlurp](https://zyntra.app/vs/mailslurp): Receive-only test inboxes vs a full email and SMS platform: prices and features. - [Gmail plus addressing vs a test inbox API](https://zyntra.app/vs/gmail-plus-addressing): Why +tag Gmail addresses get awkward in parallel automated tests. - [SPF, DKIM and DMARC checker](https://zyntra.app/tools/spf-dkim-dmarc-checker): Free browser tool: checks a domain's SPF (with the 10-lookup limit), DKIM keys, DMARC policy and MX records. - [Email header analyzer](https://zyntra.app/tools/email-header-analyzer): Free browser tool: parses pasted email headers into the delivery path, SPF/DKIM/DMARC results and alignment. - [Blog](https://zyntra.app/blog): Practical posts on testing the email step. - [Privacy policy](https://zyntra.app/privacy-policy): How account data and received mail are handled. - [Terms of service](https://zyntra.app/terms): Accounts, plans and payment, cancellation, acceptable use. ## Blog - [How long should a test wait for an email?](https://zyntra.app/blog/polling-for-email-in-tests): Wait for the first email with one long-poll request, set the test timeout above it, and count API requests per run before you pick a plan. - [Why your E2E test opened the wrong email](https://zyntra.app/blog/wrong-email-in-e2e-test): Reused addresses, a second email to the same inbox and parallel workers. Four causes of a test reading the wrong email, and how to rule each out. - [Testing emails in GitHub Actions](https://zyntra.app/blog/email-testing-github-actions): Store the API key as a secret, build addresses from GITHUB_RUN_ID and GITHUB_RUN_ATTEMPT, and know why pull requests from forks get no secrets. - [Sandbox modes of SendGrid, Postmark, Resend and SES: what gets delivered](https://zyntra.app/blog/esp-sandbox-modes): In sandbox or test mode most providers accept the email and deliver nothing. What each one does, and how to test real delivery from staging. - [Getting the verification link out of an email (and why click tracking breaks it)](https://zyntra.app/blog/extract-link-from-email): Pick the link by text or path, not position. Click tracking rewrites URLs to the provider's domain: turn it off for staging or follow the redirect. - [Reading a one-time code from an email without false matches](https://zyntra.app/blog/otp-from-email-body): A bare \d{6} matches order numbers and dates. Anchor the pattern to the words around the code, normalize the text and require exactly one match. - [Plus addressing, catch-all and subdomains: how test email addresses work](https://zyntra.app/blog/test-email-address-formats): Plus addresses share one mailbox, catch-all needs your own domain, subdomain inboxes need DNS. How each format routes mail, and what that means for tests. - [Mailpit locally, a real inbox on staging: where each one fits](https://zyntra.app/blog/mailpit-vs-real-inbox): Mailpit catches SMTP on your machine; it can't see mail sent through a provider's API. Use it locally and a real inbox where delivery matters. - [Why emails from staging land in spam: SPF, DKIM and DMARC](https://zyntra.app/blog/staging-email-spf-dkim): Staging often sends from a domain with no SPF, an unsigned DKIM or a From that doesn't align. How to read the headers of a received email and fix it. - [Cleaning up after email tests: delete over the API or let retention do it](https://zyntra.app/blog/cleaning-up-test-emails): Temporary test mail expires on its own. Delete over the API when inboxes are reused or hold personal data, and count the requests it costs. - [Testing Firebase Auth emails: emulator links vs a real inbox](https://zyntra.app/blog/firebase-auth-email-testing): The Auth emulator sends no email; read links from its oobCodes endpoint. Test the template, action URL and delivery against a staging project. - [Testing Supabase Auth emails: Mailpit locally, SMTP on staging](https://zyntra.app/blog/supabase-auth-email-testing): The built-in email service only delivers to your team, 2 an hour. Use Mailpit locally and custom SMTP on staging, and mind the 60-second rate limit. - [Testing Clerk sign-ups: +clerk_test addresses or a real inbox](https://zyntra.app/blog/clerk-email-testing): +clerk_test addresses take the code 424242 and get no email. Keep a few real-email tests, and watch the 100-a-month cap on development instances. - [Testing Cognito sign-up emails: the 50-a-day limit and the code](https://zyntra.app/blog/cognito-email-testing): Default Cognito email allows 50 messages a day per AWS account. Send tests through your own SES, read the code, and skip email with AdminConfirmSignUp. - [Testing Auth0 verification emails past the built-in provider](https://zyntra.app/blog/auth0-email-testing): Auth0's built-in email sends 10 a minute with no custom templates, so parallel tests break. Use your own provider on staging and tickets elsewhere. - [Testing email attachments: PDFs, invoices and exports](https://zyntra.app/blog/testing-email-attachments): Pick the file by name and type, check its first bytes, and read the PDF's text for the order number. Inline logos show up as attachments too. - [What to check in email headers: Reply-To, Message-ID, unsubscribe](https://zyntra.app/blog/email-headers-to-test): Assert Reply-To, a valid Message-ID and one-click List-Unsubscribe, check DKIM signs the list headers, then send the RFC 8058 POST yourself. - [Testing email-change and double opt-in flows](https://zyntra.app/blog/email-change-double-opt-in): Two inboxes for an email change, two emails for double opt-in. Assert the order: nothing changes or arrives before the right link is opened. - [Django email tests: what mail.outbox checks and what it can't](https://zyntra.app/blog/django-email-testing): Django's test runner swaps in the locmem backend, even for LiveServerTestCase. Use mail.outbox for content and a real inbox on staging for delivery. - [Rails email tests: deliveries, deliver_later and a real inbox](https://zyntra.app/blog/rails-email-testing): Test mode fills ActionMailer::Base.deliveries; deliver_later waits for perform_enqueued_jobs. Staging interceptors and hosts need a real inbox. - [Laravel email tests: Mail::fake, Dusk and a real inbox](https://zyntra.app/blog/laravel-email-testing): Mail::fake covers mailables in feature tests but not Dusk, which runs the app separately. On staging, alwaysTo and queues can stop real email. ## Docs - [Getting started](https://docs.zyntra.app/getting-started): create an API key and read your first email. - [API reference](https://docs.zyntra.app/api): every endpoint and response format. - [Node.js SDK](https://docs.zyntra.app/nodejs): the `zyntramail-api` package. - [MCP server](https://docs.zyntra.app/mcp): connect an AI agent to your test inboxes. ## Plans - Free: $0. 150 emails/month, 500 API requests/month, permanent inboxes keep mail 7 days. - Starter: $11/month billed monthly, or $9/month billed yearly. 10,000 emails/month, permanent inboxes keep mail 30 days. - Pro: $39/month billed monthly, or $29/month billed yearly. 50,000 emails/month, permanent inboxes keep mail 90 days. ## Contact - support@zyntra.app