Compare
A Mailtrap alternative for email testing, billed in pounds
The SendPelican Email Sandbox catches the mail your development, staging and CI apps send, so you can read it and nobody real receives it. It does the job Mailtrap's Email Sandbox does: an SMTP login per inbox, the rendered message, its source and headers, and an API for tests. The free plan holds 100 test emails a month where Mailtrap's holds 50.
What each plan gives you
Monthly prices. SendPelican bills in pounds; Mailtrap bills in US dollars, so compare at today's exchange rate.
| Plan | Price | Inboxes | Test emails a month | Messages kept per inbox | Kept for |
|---|---|---|---|---|---|
| Sandbox Free | £0 | 1 | 100 | 50 | 1 day |
| Sandbox Dev | £5 | 5 | 1,000 | 500 | 7 days |
| Sandbox Team | £15 | 25 | 10,000 | 1,000 | 30 days |
| Sandbox Business | £39 | 100 | 50,000 | 2,000 | 60 days |
| Plan | Price | Sandboxes | Test emails a month | Messages kept per sandbox |
|---|---|---|---|---|
| Free | $0 | 1 | 50 | 10 |
| Basic | $17 | 1 | 500 | 50 |
| Team | $42 | 5 | 5,000 | 200 |
| Business | $123 | 50 | 50,000 | 600 |
Mailtrap figures from their pricing page, monthly billing, checked 16 October 2026. They offer a discount for annual billing and larger plans not shown here.
Switching is a change to your mail settings
Create an inbox in the dashboard, copy its username (it starts sb_) and password, and point your app at smtp.sendpelican.com port 2525. The From address can be on any domain. For a Laravel app:
# Laravel 11+. On Laravel 10 or older, use MAIL_ENCRYPTION=tls in place of MAIL_SCHEME.
MAIL_MAILER=smtp
MAIL_SCHEME=smtp
MAIL_HOST=smtp.sendpelican.com
MAIL_PORT=2525
MAIL_USERNAME=<SMTP_USERNAME>
MAIL_PASSWORD=<SMTP_PASSWORD>
MAIL_FROM_ADDRESS=app@staging.example.com
A sending credential is refused on the sandbox port, and a sandbox login is refused on the sending ports, so a staging app cannot email real customers by mistake. The sandbox docs have settings for other frameworks.
Test sign-up and password reset emails in CI
The wait endpoint answers the moment a matching email lands, so a test needs no fixed sleep. Filter by recipient, sender or subject, follow the link in the email, then clean the inbox for the next run. Your team can make API keys that reach only the sandbox.
# The app under test sends through the sandbox: MAIL_HOST=smtp.sendpelican.com MAIL_PORT=2525,
# with the inbox's sb_ username and password. Then the test:
API=https://sendpelican.com/v1/sandbox
AUTH="Authorization: Bearer $SANDBOX_API_KEY" # a key with sandbox:read and sandbox:manage
curl -sf -X POST "$APP_URL/signup" -d email=ada@example.com
# Blocks until the email lands (up to 30 s), else 404.
MESSAGE=$(curl -sf -H "$AUTH" "$API/inboxes/$SANDBOX_INBOX_ID/messages/wait?to=ada@example.com&subject=Confirm&timeout=30")
LINK=$(curl -sf -H "$AUTH" "$(jq -r .data.links.html <<<"$MESSAGE")" | grep -o 'https://[^"]*/confirm/[^"]*' | head -n 1)
curl -sf "$LINK"
# Start the next run with an empty inbox.
curl -sf -X POST -H "$AUTH" "$API/inboxes/$SANDBOX_INBOX_ID/clean"
What you see for each email
- The rendered HTML with remote content blocked, the text part, the raw source, the headers and the attachments.
- Static HTML checks for what mail clients strip or clip, such as scripts, forms, unsupported CSS, missing alt text and HTML past Gmail's clipping size.
When Mailtrap is the better choice
- You want email marketing, campaigns and contact lists in the same account. SendPelican does not have them.
- You need previews rendered in real mail clients. Our HTML checks read the markup; they do not render it in Outlook or Gmail.
- You want a long-established product with a large team and enterprise plans.
- You only test on your own machine. A local catcher such as Mailpit is free and needs no account.
Try the sandbox free
Sandbox Free gives you 1 inbox and 100 test emails a month with no card. Testing never uses your sending quota.
Start freeMailtrap is a trademark of its owner. SendPelican is not affiliated with or endorsed by Mailtrap.