Preview: SendMock has no stable release yet. These docs follow develop.
SendMock

Logs

The raw SMTP sessions and API requests behind every message, including the ones SendMock rejected.

Try it in the demo.

Mail, SMS and Payments show what arrived. Logs show how it arrived, and what did not: every SMTP conversation and every API call, including failed and rejected ones.

The Logs screen with an SMTP transcript open

What it solves

  • "My app says it sent the email, but nothing shows in Mail." The SMTP session shows the TLS or AUTH problem, or the command that failed.
  • "My SMS call returns 400." The API request shows the body your app sent and SendMock's error, for example a Twilio test number's 21211.
  • Checking what credentials, TLS version and EHLO name your mailer uses.

How it connects

Gets fromSends to
every SMTP session behind MailOpen email: the email a session stored
every API request behind SMS, Verify, Payments and the email APIsOpen message: the SMS or email a request created
the SMS drawer's "Open in request log" and the email's source badge link here

Use it

  1. Press G L.
  2. On SMTP sessions, press the Failed chip.
  3. Open a session and read the transcript: client commands and server replies, colour-coded, with the failure reason on top.

Everything on this screen

Two tabs, kept in the URL. Both load 50 rows at a time, the next page as you scroll ("Showing 50 of 5,021"), and their filters and search run over every row.

SMTP sessions

A table: time, client address, EHLO name, TLS (version or Plain), AUTH (user and mechanism), result (Delivered, Rejected, Aborted), emails stored and duration. Failed sessions are highlighted with their reason. Chips (All, Delivered, Failed) and a search on client, EHLO name and user.

The drawer: the session facts, the failure reason, and the transcript, one line per command or reply, client and server told apart by colour and a C or S marker, reply codes coloured by class (2xx, 3xx, 4xx, 5xx), AUTH secrets masked, and the DATA line linking to the stored email. Copy transcript and Open email.

API requests

A table: time, API (Native, Twilio, Vonage, SendGrid, ...), method, path, status and duration. Rejected requests (4xx and 5xx) are highlighted. Chips by status class (All, 2xx, 4xx, 5xx), an API picker and a path search.

The drawer: method, full path, status, duration and time; request headers (credentials masked); the request body (JSON formatted, forms as a field table) and the response body; Open message for what the request created.

Every control and text, one by one: Logs in depth.

Customize

How long logs are kept follows retention in Settings > General. To make SMTP fail on purpose, see Advanced: chaos.

From your code

List the SMTP sessions that failed, for example after a test that expects your app to retry.

The examples call SendMock's REST API with each language's usual HTTP client and test framework. JavaScript, Go, Java, Rust, Ruby and C# use the small call helper shown under Test helper on their page in Connect your app.

sessions=$(sendmock logs smtp --result failed --json)

session=$(jq '.items[0]' <<<"$sessions")

jq -e '.result == "failed"' <<<"$session" >/dev/null

From the CLI, API and AI

On this page