Email sandbox and mock SSO for developers. Nothing reaches real users.

Test the email and sign-in flows your users depend on

Point your staging and test environments at Testlie. Every email lands in a shared inbox where your team can preview it and assert on it from CI, and mock OIDC and SAML identity providers let you test single sign-on with any user, group or claim you need.

How it works

From first email to green build in minutes

  1. 1

    Point SMTP at us

    Create an inbox and paste its SMTP host, port and credentials into your app's mail settings. No code changes, any language or framework.

    SMTP_HOST=smtp.testlie.com

  2. 2

    Inspect what was sent

    Messages appear live. Preview the HTML at phone, tablet and desktop widths, read the raw source and headers, and open attachments.

    HTML · Text · Raw · Headers

  3. 3

    Automate it in CI

    Use an API key to wait for a message in your end-to-end tests, then assert on the subject, recipients, links and body.

    GET /messages/wait?to=…

Features

Everything you need to test email and SSO

One place to see, check and automate the mail your applications send and the sign-ins they accept, without emailing a real person or touching a real identity provider.

  • Inboxes & projects

    Group inboxes by project, one per app or environment, each with its own SMTP credentials, inbound address and message limit.

  • Mock identity providers

    Spin up fake OIDC and SAML 2.0 identity providers, define test users with groups and custom claims, and watch every request in a live activity log.

  • HTML preview at any width

    Render the HTML body in a sandboxed frame and switch between phone, tablet and desktop widths to catch layout bugs.

  • Spam analysis

    Score messages with SpamAssassin and see which rules fired, so your emails stay out of real users' junk folders.

  • HTML compatibility check

    Find the HTML and CSS features that popular clients such as Gmail, Outlook and Apple Mail do not support, before you ship.

  • Raw source, headers & attachments

    Read the message exactly as it was received, every header, the plain-text part, and download attachments or the .eml file.

  • Teams & roles

    Invite teammates by email as owners, admins or members. Admins manage inboxes and keys; members read messages.

  • Single sign-on

    Connect Okta, Microsoft Entra ID, Google Workspace or any OIDC or SAML 2.0 identity provider per team.

  • Two-factor authentication

    Protect accounts with authenticator-app codes and backup codes, alongside GitHub, Google and Microsoft sign-in.

  • API & wait-for-message

    A REST API with team API keys, including a long-polling endpoint that returns as soon as the email your test expects arrives.

  • Webhooks & forwarding

    Notify your services when mail arrives, and forward a captured message to a real address when you need to see it in a client.

  • Live updates

    New messages appear the moment they arrive, without refreshing, for everyone watching the inbox.

  • Self-hosted

    Run Testlie on your own infrastructure with Docker and Postgres. Your test data never leaves your network.

For developers

Send with any SMTP client. Assert with one HTTP call.

Your app keeps its normal mail code. Your tests ask the API for the message they expect, and fail fast when it does not come.

send.ts
import nodemailer from "nodemailer";

// Credentials come from the inbox's SMTP settings page.
const transport = nodemailer.createTransport({
  host: "smtp.testlie.com",
  port: 587,
  auth: { user: process.env.SMTP_USER, pass: process.env.SMTP_PASS },
});

await transport.sendMail({
  from: "app@example.com",
  to: "new-user@example.com",
  subject: "Welcome aboard",
  html: "<h1>Hi!</h1><a href='https://app.example.com/verify'>Verify</a>",
});
ci.sh
# Block until the welcome email arrives (up to 30 s), then assert on it.
curl -sf -H "Authorization: Bearer $API_KEY" \
  "https://testlie.com/api/inboxes/$INBOX_ID/messages/wait?to=new-user@example.com&subject=Welcome&timeout=30" \
  | jq -r '.message.subject'

# Fetch the full message (HTML, text, headers, attachments).
curl -s -H "Authorization: Bearer $API_KEY" \
  "https://testlie.com/api/messages/$MESSAGE_ID"

Stop emailing real people from staging

Create an account, set up your first inbox and send a test message in under a minute.