Repository navigation
Releases
Releases · shibbirweb/sendmock
SendMock 1.0.0
Added
- SendMock catches the email, SMS, push notifications, payments and webhooks your app sends while you develop and test, and shows them in a web UI at http://127.0.0.1:8025. Your app talks to it over SMTP and the providers' own HTTP APIs, so nothing reaches a real inbox, phone or payment provider.
sendmock --demostarts it with sample data to look around. - Email: an SMTP server on port 1025 (with STARTTLS, AUTH and a size limit), the send APIs of SendGrid, Mailgun, Postmark, Resend, Amazon SES and Brevo, a native
POST /api/v1/send, asendmailshim and a Mailpit-compatible API. Each email shows its HTML, text, source, headers and attachments, with link and spam checks, and one-time codes and links pulled out for your tests. - Email outcomes: simulate delivered, bounced, deferred, spam complaint and unsubscribe, by hand or with outcome addresses and rules, and send the matching webhooks in each provider's own format. Reply, reply all or forward as the recipient to test inbound mail, and read the mailbox over POP3 (
--pop3-addr). - Release to a real inbox: send one real copy of a caught email through your SMTP relay, or forward arriving emails with auto-forward rules, only to the recipients you allow.
- SMS and verification codes: the APIs of Twilio (Messages, Messaging Services and Verify), Vonage (SMS and Verify v2), AWS SNS, Infobip, Sinch, Africa's Talking, MessageBird and Telnyx, shown as conversations with delivery status, status callbacks and replies. Twilio's official test numbers fail exactly as on Twilio, and WhatsApp Business Cloud API messages, media and webhooks work too.
- Push notifications: FCM HTTP v1, Expo and OneSignal sends, with an iOS and Android lock screen preview and magic tokens for each provider's failures.
- Payments: Stripe, PayPal, Razorpay, Paddle, bKash, SSLCommerz and your own gateways, with a hosted test checkout page, subscriptions, refunds and disputes, and simulated outcomes that send the provider's webhooks.
- Webhooks back to your app: rules that send Standard Webhooks or a provider's own format on any event, with templates, variables, signing secrets, retries with backoff, a delivery log, replay and saved deliveries, and inbound routes like Mailgun's.
- Where a simulated reply goes: the Reply and Forward composers in Mail show Delivers to, each URL or address the inbound routes and webhook rules will send the email to, and when nothing would, Send replies to your app creates a route to your app's URL in one step. After sending, the notice and the incoming email list each webhook request with its status, linked to Webhooks > Deliveries. Send reply works on the prefilled text, even with an empty message box.
sendmock route matchandPOST /api/v1/inbound-routes/matchanswer the same question from the CLI and API. - Icon tooltips: every button or link in the web UI that shows only an icon names its action in a tooltip when you hover or focus it, with its keyboard shortcut when it has one (for example Delete email
D). The?shortcut list now also shows the list and email keys (J,K,/,D,R,Shift+R,F). - Webhooks on every simulation: each action that simulates traffic (Mail's Simulate menu, Reply, Reply all and Forward, Import .eml as incoming, the Send a sample buttons, SMS's Simulate read, Set status and Reply as recipient, and a payment's Simulate menu) names the webhooks its event will trigger, each opening the endpoint in a new tab, or says No webhook. Change in a composer or Choose beside a menu item sends that one action to the endpoints you pick instead, without changing any rule; the deliveries are marked
chosen. In the API and MCP the same operations takewebhook_endpoint_ids, in the CLI--webhook, andsendmock webhook rule match(POST /api/v1/webhooks/rules/match) answers which webhooks an event would trigger. - Payload on every simulated webhook: Payload beside each webhook a simulation names (and beside each endpoint ticked in Choose) shows the request it will send, rendered with the endpoint's template, and lets you edit the body for that one action. The edited body is sent exactly as written and signed over those bytes, so your app's signature check still passes, and the delivery is marked
editedin Webhooks > Deliveries.POST /api/v1/webhooks/rules/matchreturns the requests withinclude_requests, and the simulating operations take the edits aswebhook_requests(--webhook-requestsin the CLI). - Test builds: every pull request, and every change merged into
developormain, builds SendMock for macOS, Linux and Windows (x64 and Arm64), tests each build on its own system and attaches it to the workflow run, linked from a comment on the pull request. Install > Try a build that is not released yet says how to download, check and run one. - HTTP catcher: bins that capture any request your app sends (Slack, Discord, Teams, Telegram and more), with previews and mock responses, and a catch-all port (
--catcher-addr). - Projects: keep the mail, SMS and codes of several apps apart in one SendMock, picked by the SMTP username, a header or a URL prefix.
- For tests and CI: wait for the next email or SMS and read its code or link over the REST API, the CLI or MCP; reset to a seed file (
sendmock.seed.toml) before each run; and script whole flows as scenarios. Testcontainers modules for Node.js, Python, Go, Java and .NET start SendMock inside your tests. - Every feature in four ways: the web UI, a REST API described by OpenAPI, the
sendmockCLI with--jsonoutput, and an MCP server for AI agents.sendmock ai installsets SendMock up in Claude Code, Codex, Cursor, Gemini CLI or VS Code with its agent skill, and Claude Code users can install it as a plugin. - Retention: keep the newest 1,000 emails and 1,000 SMS by default, change the limits with
--max-emails,--max-smsor--max-age, or set a limit to 0 to keep everything (with a warning, since the database then grows until the disk is full). - Safe by default: SendMock listens on 127.0.0.1 only, can require a login (
--ui-auth) or an API token (--api-token), and masks secrets in the UI, API answers, logs and seed exports. - Install your way:
npx sendmockorbunx sendmockwith nothing installed, Docker (GHCR and Docker Hub, signed, with an SBOM), Homebrew, Scoop, WinGet, Chocolatey, apt, dnf, Nix, Cargo, an install script or a plain binary for macOS, Linux and Windows on x64 and Arm. A Helm chart, a Docker Desktop extension and a menu bar app are there too. - Docs: a guide for every screen and setting, a page that explains every control, recipes in nine languages, the API, CLI and MCP references and a live demo, at https://shibbirweb.github.io/sendmock/.
Fixed
- Live updates under load: the mail list keeps showing new mail while an app sends thousands of emails, and toasts and browser notifications show at most one every 2 seconds, saying how many more arrived.
- Package repository: the APT and YUM repository at https://shibbirweb.github.io/sendmock/packages/ is now published with each release, so
apt install sendmockanddnf install sendmockwith the beta component work as the install page shows. - npm and Maven Central: the
sendmockpackage on npm (fornpx sendmock@betaandbunx sendmock@beta) and the Java Testcontainers moduleio.github.shibbirweb:sendmock-testcontainerson Maven Central are published with each release. npx sendmockwith no tag: until 1.0.0, each beta is also npm'slatestversion, sonpx sendmockandbunx sendmockrun the newest beta instead of an empty placeholder package.- Lists after retention: when retention deletes old traffic past the limits in Settings, the open lists, their counts and the sidebar badges update right away, instead of showing deleted emails until you reload the page.
SendMock 1.0.0-beta.1
Added
- SendMock catches the email, SMS, push notifications, payments and webhooks your app sends while you develop and test, and shows them in a web UI at http://127.0.0.1:8025. Your app talks to it over SMTP and the providers' own HTTP APIs, so nothing reaches a real inbox, phone or payment provider.
sendmock --demostarts it with sample data to look around. - Email: an SMTP server on port 1025 (with STARTTLS, AUTH and a size limit), the send APIs of SendGrid, Mailgun, Postmark, Resend, Amazon SES and Brevo, a native
POST /api/v1/send, asendmailshim and a Mailpit-compatible API. Each email shows its HTML, text, source, headers and attachments, with link and spam checks, and one-time codes and links pulled out for your tests. - Email outcomes: simulate delivered, bounced, deferred, spam complaint and unsubscribe, by hand or with outcome addresses and rules, and send the matching webhooks in each provider's own format. Reply, reply all or forward as the recipient to test inbound mail, and read the mailbox over POP3 (
--pop3-addr). - Release to a real inbox: send one real copy of a caught email through your SMTP relay, or forward arriving emails with auto-forward rules, only to the recipients you allow.
- SMS and verification codes: the APIs of Twilio (Messages, Messaging Services and Verify), Vonage (SMS and Verify v2), AWS SNS, Infobip, Sinch, Africa's Talking, MessageBird and Telnyx, shown as conversations with delivery status, status callbacks and replies. Twilio's official test numbers fail exactly as on Twilio, and WhatsApp Business Cloud API messages, media and webhooks work too.
- Push notifications: FCM HTTP v1, Expo and OneSignal sends, with an iOS and Android lock screen preview and magic tokens for each provider's failures.
- Payments: Stripe, PayPal, Razorpay, Paddle, bKash, SSLCommerz and your own gateways, with a hosted test checkout page, subscriptions, refunds and disputes, and simulated outcomes that send the provider's webhooks.
- Webhooks back to your app: rules that send Standard Webhooks or a provider's own format on any event, with templates, variables, signing secrets, retries with backoff, a delivery log, replay and saved deliveries, and inbound routes like Mailgun's.
- Where a simulated reply goes: the Reply and Forward composers in Mail show Delivers to, each URL or address the inbound routes and webhook rules will send the email to, and when nothing would, Send replies to your app creates a route to your app's URL in one step. After sending, the notice and the incoming email list each webhook request with its status, linked to Webhooks > Deliveries. Send reply works on the prefilled text, even with an empty message box.
sendmock route matchandPOST /api/v1/inbound-routes/matchanswer the same question from the CLI and API. - Icon tooltips: every button or link in the web UI that shows only an icon names its action in a tooltip when you hover or focus it, with its keyboard shortcut when it has one (for example Delete email
D). The?shortcut list now also shows the list and email keys (J,K,/,D,R,Shift+R,F). - Webhooks on every simulation: each action that simulates traffic (Mail's Simulate menu, Reply, Reply all and Forward, Import .eml as incoming, the Send a sample buttons, SMS's Simulate read, Set status and Reply as recipient, and a payment's Simulate menu) names the webhooks its event will trigger, each opening the endpoint in a new tab, or says No webhook. Change in a composer or Choose beside a menu item sends that one action to the endpoints you pick instead, without changing any rule; the deliveries are marked
chosen. In the API and MCP the same operations takewebhook_endpoint_ids, in the CLI--webhook, andsendmock webhook rule match(POST /api/v1/webhooks/rules/match) answers which webhooks an event would trigger. - Payload on every simulated webhook: Payload beside each webhook a simulation names (and beside each endpoint ticked in Choose) shows the request it will send, rendered with the endpoint's template, and lets you edit the body for that one action. The edited body is sent exactly as written and signed over those bytes, so your app's signature check still passes, and the delivery is marked
editedin Webhooks > Deliveries.POST /api/v1/webhooks/rules/matchreturns the requests withinclude_requests, and the simulating operations take the edits aswebhook_requests(--webhook-requestsin the CLI). - Test builds: every pull request, and every change merged into
developormain, builds SendMock for macOS, Linux and Windows (x64 and Arm64), tests each build on its own system and attaches it to the workflow run, linked from a comment on the pull request. Install > Try a build that is not released yet says how to download, check and run one. - HTTP catcher: bins that capture any request your app sends (Slack, Discord, Teams, Telegram and more), with previews and mock responses, and a catch-all port (
--catcher-addr). - Projects: keep the mail, SMS and codes of several apps apart in one SendMock, picked by the SMTP username, a header or a URL prefix.
- For tests and CI: wait for the next email or SMS and read its code or link over the REST API, the CLI or MCP; reset to a seed file (
sendmock.seed.toml) before each run; and script whole flows as scenarios. Testcontainers modules for Node.js, Python, Go, Java and .NET start SendMock inside your tests. - Every feature in four ways: the web UI, a REST API described by OpenAPI, the
sendmockCLI with--jsonoutput, and an MCP server for AI agents.sendmock ai installsets SendMock up in Claude Code, Codex, Cursor, Gemini CLI or VS Code with its agent skill, and Claude Code users can install it as a plugin. - Retention: keep the newest 1,000 emails and 1,000 SMS by default, change the limits with
--max-emails,--max-smsor--max-age, or set a limit to 0 to keep everything (with a warning, since the database then grows until the disk is full). - Safe by default: SendMock listens on 127.0.0.1 only, can require a login (
--ui-auth) or an API token (--api-token), and masks secrets in the UI, API answers, logs and seed exports. - Install your way:
npx sendmockorbunx sendmockwith nothing installed, Docker (GHCR and Docker Hub, signed, with an SBOM), Homebrew, Scoop, WinGet, Chocolatey, apt, dnf, Nix, Cargo, an install script or a plain binary for macOS, Linux and Windows on x64 and Arm. A Helm chart, a Docker Desktop extension and a menu bar app are there too. - Docs: a guide for every screen and setting, a page that explains every control, recipes in nine languages, the API, CLI and MCP references and a live demo, at https://shibbirweb.github.io/sendmock/.
Fixed
- Live updates under load: the mail list keeps showing new mail while an app sends thousands of emails, and toasts and browser notifications show at most one every 2 seconds, saying how many more arrived.
- Package repository: the APT and YUM repository at https://shibbirweb.github.io/sendmock/packages/ is now published with each release, so
apt install sendmockanddnf install sendmockwith the beta component work as the install page shows. - npm and Maven Central: the
sendmockpackage on npm (fornpx sendmock@betaandbunx sendmock@beta) and the Java Testcontainers moduleio.github.shibbirweb:sendmock-testcontainerson Maven Central are published with each release. npx sendmockwith no tag: until 1.0.0, each beta is also npm'slatestversion, sonpx sendmockandbunx sendmockrun the newest beta instead of an empty placeholder package.- Lists after retention: when retention deletes old traffic past the limits in Settings, the open lists, their counts and the sidebar badges update right away, instead of showing deleted emails until you reload the page.
SendMock 0.1.0-beta.4
Added
- SendMock catches the email, SMS, push notifications, payments and webhooks your app sends while you develop and test, and shows them in a web UI at http://127.0.0.1:8025. Your app talks to it over SMTP and the providers' own HTTP APIs, so nothing reaches a real inbox, phone or payment provider.
sendmock --demostarts it with sample data to look around. - Email: an SMTP server on port 1025 (with STARTTLS, AUTH and a size limit), the send APIs of SendGrid, Mailgun, Postmark, Resend, Amazon SES and Brevo, a native
POST /api/v1/send, asendmailshim and a Mailpit-compatible API. Each email shows its HTML, text, source, headers and attachments, with link and spam checks, and one-time codes and links pulled out for your tests. - Email outcomes: simulate delivered, bounced, deferred, spam complaint and unsubscribe, by hand or with outcome addresses and rules, and send the matching webhooks in each provider's own format. Reply, reply all or forward as the recipient to test inbound mail, and read the mailbox over POP3 (
--pop3-addr). - Release to a real inbox: send one real copy of a caught email through your SMTP relay, or forward arriving emails with auto-forward rules, only to the recipients you allow.
- SMS and verification codes: the APIs of Twilio (Messages, Messaging Services and Verify), Vonage (SMS and Verify v2), AWS SNS, Infobip, Sinch, Africa's Talking, MessageBird and Telnyx, shown as conversations with delivery status, status callbacks and replies. Twilio's official test numbers fail exactly as on Twilio, and WhatsApp Business Cloud API messages, media and webhooks work too.
- Push notifications: FCM HTTP v1, Expo and OneSignal sends, with an iOS and Android lock screen preview and magic tokens for each provider's failures.
- Payments: Stripe, PayPal, Razorpay, Paddle, bKash, SSLCommerz and your own gateways, with a hosted test checkout page, subscriptions, refunds and disputes, and simulated outcomes that send the provider's webhooks.
- Webhooks back to your app: rules that send Standard Webhooks or a provider's own format on any event, with templates, variables, signing secrets, retries with backoff, a delivery log, replay and saved deliveries, and inbound routes like Mailgun's.
- Where a simulated reply goes: the Reply and Forward composers in Mail show Delivers to, each URL or address the inbound routes and webhook rules will send the email to, and when nothing would, Send replies to your app creates a route to your app's URL in one step. After sending, the notice and the incoming email list each webhook request with its status, linked to Webhooks > Deliveries. Send reply works on the prefilled text, even with an empty message box.
sendmock route matchandPOST /api/v1/inbound-routes/matchanswer the same question from the CLI and API. - Icon tooltips: every button or link in the web UI that shows only an icon names its action in a tooltip when you hover or focus it, with its keyboard shortcut when it has one (for example Delete email
D). The?shortcut list now also shows the list and email keys (J,K,/,D,R,Shift+R,F). - Webhooks on every simulation: each action that simulates traffic (Mail's Simulate menu, Reply, Reply all and Forward, Import .eml as incoming, the Send a sample buttons, SMS's Simulate read, Set status and Reply as recipient, and a payment's Simulate menu) names the webhooks its event will trigger, each opening the endpoint in a new tab, or says No webhook. Change in a composer or Choose beside a menu item sends that one action to the endpoints you pick instead, without changing any rule; the deliveries are marked
chosen. In the API and MCP the same operations takewebhook_endpoint_ids, in the CLI--webhook, andsendmock webhook rule match(POST /api/v1/webhooks/rules/match) answers which webhooks an event would trigger. - Payload on every simulated webhook: Payload beside each webhook a simulation names (and beside each endpoint ticked in Choose) shows the request it will send, rendered with the endpoint's template, and lets you edit the body for that one action. The edited body is sent exactly as written and signed over those bytes, so your app's signature check still passes, and the delivery is marked
editedin Webhooks > Deliveries.POST /api/v1/webhooks/rules/matchreturns the requests withinclude_requests, and the simulating operations take the edits aswebhook_requests(--webhook-requestsin the CLI). - Test builds: every pull request, and every change merged into
developormain, builds SendMock for macOS, Linux and Windows (x64 and Arm64), tests each build on its own system and attaches it to the workflow run, linked from a comment on the pull request. Install > Try a build that is not released yet says how to download, check and run one. - HTTP catcher: bins that capture any request your app sends (Slack, Discord, Teams, Telegram and more), with previews and mock responses, and a catch-all port (
--catcher-addr). - Projects: keep the mail, SMS and codes of several apps apart in one SendMock, picked by the SMTP username, a header or a URL prefix.
- For tests and CI: wait for the next email or SMS and read its code or link over the REST API, the CLI or MCP; reset to a seed file (
sendmock.seed.toml) before each run; and script whole flows as scenarios. Testcontainers modules for Node.js, Python, Go, Java and .NET start SendMock inside your tests. - Every feature in four ways: the web UI, a REST API described by OpenAPI, the
sendmockCLI with--jsonoutput, and an MCP server for AI agents.sendmock ai installsets SendMock up in Claude Code, Codex, Cursor, Gemini CLI or VS Code with its agent skill, and Claude Code users can install it as a plugin. - Retention: keep the newest 1,000 emails and 1,000 SMS by default, change the limits with
--max-emails,--max-smsor--max-age, or set a limit to 0 to keep everything (with a warning, since the database then grows until the disk is full). - Safe by default: SendMock listens on 127.0.0.1 only, can require a login (
--ui-auth) or an API token (--api-token), and masks secrets in the UI, API answers, logs and seed exports. - Install your way:
npx sendmockorbunx sendmockwith nothing installed, Docker (GHCR and Docker Hub, signed, with an SBOM), Homebrew, Scoop, WinGet, Chocolatey, apt, dnf, Nix, Cargo, an install script or a plain binary for macOS, Linux and Windows on x64 and Arm. A Helm chart, a Docker Desktop extension and a menu bar app are there too. - Docs: a guide for every screen and setting, a page that explains every control, recipes in nine languages, the API, CLI and MCP references and a live demo, at https://shibbirweb.github.io/sendmock/.
Fixed
- Live updates under load: the mail list keeps showing new mail while an app sends thousands of emails, and toasts and browser notifications show at most one every 2 seconds, saying how many more arrived.
- Package repository: the APT and YUM repository at https://shibbirweb.github.io/sendmock/packages/ is now published with each release, so
apt install sendmockanddnf install sendmockwith the beta component work as the install page shows. - npm and Maven Central: the
sendmockpackage on npm (fornpx sendmock@betaandbunx sendmock@beta) and the Java Testcontainers moduleio.github.shibbirweb:sendmock-testcontainerson Maven Central are published with each release. npx sendmockwith no tag: until 1.0.0, each beta is also npm'slatestversion, sonpx sendmockandbunx sendmockrun the newest beta instead of an empty placeholder package.- Lists after retention: when retention deletes old traffic past the limits in Settings, the open lists, their counts and the sidebar badges update right away, instead of showing deleted emails until you reload the page.
Latest beta: SendMock 1.0.0-beta.1
Added
- SendMock catches the email, SMS, push notifications, payments and webhooks your app sends while you develop and test, and shows them in a web UI at http://127.0.0.1:8025. Your app talks to it over SMTP and the providers' own HTTP APIs, so nothing reaches a real inbox, phone or payment provider.
sendmock --demostarts it with sample data to look around. - Email: an SMTP server on port 1025 (with STARTTLS, AUTH and a size limit), the send APIs of SendGrid, Mailgun, Postmark, Resend, Amazon SES and Brevo, a native
POST /api/v1/send, asendmailshim and a Mailpit-compatible API. Each email shows its HTML, text, source, headers and attachments, with link and spam checks, and one-time codes and links pulled out for your tests. - Email outcomes: simulate delivered, bounced, deferred, spam complaint and unsubscribe, by hand or with outcome addresses and rules, and send the matching webhooks in each provider's own format. Reply, reply all or forward as the recipient to test inbound mail, and read the mailbox over POP3 (
--pop3-addr). - Release to a real inbox: send one real copy of a caught email through your SMTP relay, or forward arriving emails with auto-forward rules, only to the recipients you allow.
- SMS and verification codes: the APIs of Twilio (Messages, Messaging Services and Verify), Vonage (SMS and Verify v2), AWS SNS, Infobip, Sinch, Africa's Talking, MessageBird and Telnyx, shown as conversations with delivery status, status callbacks and replies. Twilio's official test numbers fail exactly as on Twilio, and WhatsApp Business Cloud API messages, media and webhooks work too.
- Push notifications: FCM HTTP v1, Expo and OneSignal sends, with an iOS and Android lock screen preview and magic tokens for each provider's failures.
- Payments: Stripe, PayPal, Razorpay, Paddle, bKash, SSLCommerz and your own gateways, with a hosted test checkout page, subscriptions, refunds and disputes, and simulated outcomes that send the provider's webhooks.
- Webhooks back to your app: rules that send Standard Webhooks or a provider's own format on any event, with templates, variables, signing secrets, retries with backoff, a delivery log, replay and saved deliveries, and inbound routes like Mailgun's.
- Where a simulated reply goes: the Reply and Forward composers in Mail show Delivers to, each URL or address the inbound routes and webhook rules will send the email to, and when nothing would, Send replies to your app creates a route to your app's URL in one step. After sending, the notice and the incoming email list each webhook request with its status, linked to Webhooks > Deliveries. Send reply works on the prefilled text, even with an empty message box.
sendmock route matchandPOST /api/v1/inbound-routes/matchanswer the same question from the CLI and API. - Icon tooltips: every button or link in the web UI that shows only an icon names its action in a tooltip when you hover or focus it, with its keyboard shortcut when it has one (for example Delete email
D). The?shortcut list now also shows the list and email keys (J,K,/,D,R,Shift+R,F). - Webhooks on every simulation: each action that simulates traffic (Mail's Simulate menu, Reply, Reply all and Forward, Import .eml as incoming, the Send a sample buttons, SMS's Simulate read, Set status and Reply as recipient, and a payment's Simulate menu) names the webhooks its event will trigger, each opening the endpoint in a new tab, or says No webhook. Change in a composer or Choose beside a menu item sends that one action to the endpoints you pick instead, without changing any rule; the deliveries are marked
chosen. In the API and MCP the same operations takewebhook_endpoint_ids, in the CLI--webhook, andsendmock webhook rule match(POST /api/v1/webhooks/rules/match) answers which webhooks an event would trigger. - Payload on every simulated webhook: Payload beside each webhook a simulation names (and beside each endpoint ticked in Choose) shows the request it will send, rendered with the endpoint's template, and lets you edit the body for that one action. The edited body is sent exactly as written and signed over those bytes, so your app's signature check still passes, and the delivery is marked
editedin Webhooks > Deliveries.POST /api/v1/webhooks/rules/matchreturns the requests withinclude_requests, and the simulating operations take the edits aswebhook_requests(--webhook-requestsin the CLI). - Test builds: every pull request, and every change merged into
developormain, builds SendMock for macOS, Linux and Windows (x64 and Arm64), tests each build on its own system and attaches it to the workflow run, linked from a comment on the pull request. Install > Try a build that is not released yet says how to download, check and run one. - HTTP catcher: bins that capture any request your app sends (Slack, Discord, Teams, Telegram and more), with previews and mock responses, and a catch-all port (
--catcher-addr). - Projects: keep the mail, SMS and codes of several apps apart in one SendMock, picked by the SMTP username, a header or a URL prefix.
- For tests and CI: wait for the next email or SMS and read its code or link over the REST API, the CLI or MCP; reset to a seed file (
sendmock.seed.toml) before each run; and script whole flows as scenarios. Testcontainers modules for Node.js, Python, Go, Java and .NET start SendMock inside your tests. - Every feature in four ways: the web UI, a REST API described by OpenAPI, the
sendmockCLI with--jsonoutput, and an MCP server for AI agents.sendmock ai installsets SendMock up in Claude Code, Codex, Cursor, Gemini CLI or VS Code with its agent skill, and Claude Code users can install it as a plugin. - Retention: keep the newest 1,000 emails and 1,000 SMS by default, change the limits with
--max-emails,--max-smsor--max-age, or set a limit to 0 to keep everything (with a warning, since the database then grows until the disk is full). - Safe by default: SendMock listens on 127.0.0.1 only, can require a login (
--ui-auth) or an API token (--api-token), and masks secrets in the UI, API answers, logs and seed exports. - Install your way:
npx sendmockorbunx sendmockwith nothing installed, Docker (GHCR and Docker Hub, signed, with an SBOM), Homebrew, Scoop, WinGet, Chocolatey, apt, dnf, Nix, Cargo, an install script or a plain binary for macOS, Linux and Windows on x64 and Arm. A Helm chart, a Docker Desktop extension and a menu bar app are there too. - Docs: a guide for every screen and setting, a page that explains every control, recipes in nine languages, the API, CLI and MCP references and a live demo, at https://shibbirweb.github.io/sendmock/.
Fixed
- Live updates under load: the mail list keeps showing new mail while an app sends thousands of emails, and toasts and browser notifications show at most one every 2 seconds, saying how many more arrived.
- Package repository: the APT and YUM repository at https://shibbirweb.github.io/sendmock/packages/ is now published with each release, so
apt install sendmockanddnf install sendmockwith the beta component work as the install page shows. - npm and Maven Central: the
sendmockpackage on npm (fornpx sendmock@betaandbunx sendmock@beta) and the Java Testcontainers moduleio.github.shibbirweb:sendmock-testcontainerson Maven Central are published with each release. npx sendmockwith no tag: until 1.0.0, each beta is also npm'slatestversion, sonpx sendmockandbunx sendmockrun the newest beta instead of an empty placeholder package.- Lists after retention: when retention deletes old traffic past the limits in Settings, the open lists, their counts and the sidebar badges update right away, instead of showing deleted emails until you reload the page.
SendMock 0.1.0-beta.3
Added
- SendMock catches the email, SMS, push notifications, payments and webhooks your app sends while you develop and test, and shows them in a web UI at http://127.0.0.1:8025. Your app talks to it over SMTP and the providers' own HTTP APIs, so nothing reaches a real inbox, phone or payment provider.
sendmock --demostarts it with sample data to look around. - Email: an SMTP server on port 1025 (with STARTTLS, AUTH and a size limit), the send APIs of SendGrid, Mailgun, Postmark, Resend, Amazon SES and Brevo, a native
POST /api/v1/send, asendmailshim and a Mailpit-compatible API. Each email shows its HTML, text, source, headers and attachments, with link and spam checks, and one-time codes and links pulled out for your tests. - Email outcomes: simulate delivered, bounced, deferred, spam complaint and unsubscribe, by hand or with outcome addresses and rules, and send the matching webhooks in each provider's own format. Reply, reply all or forward as the recipient to test inbound mail, and read the mailbox over POP3 (
--pop3-addr). - Release to a real inbox: send one real copy of a caught email through your SMTP relay, or forward arriving emails with auto-forward rules, only to the recipients you allow.
- SMS and verification codes: the APIs of Twilio (Messages, Messaging Services and Verify), Vonage (SMS and Verify v2), AWS SNS, Infobip, Sinch, Africa's Talking, MessageBird and Telnyx, shown as conversations with delivery status, status callbacks and replies. Twilio's official test numbers fail exactly as on Twilio, and WhatsApp Business Cloud API messages, media and webhooks work too.
- Push notifications: FCM HTTP v1, Expo and OneSignal sends, with an iOS and Android lock screen preview and magic tokens for each provider's failures.
- Payments: Stripe, PayPal, Razorpay, Paddle, bKash, SSLCommerz and your own gateways, with a hosted test checkout page, subscriptions, refunds and disputes, and simulated outcomes that send the provider's webhooks.
- Webhooks back to your app: rules that send Standard Webhooks or a provider's own format on any event, with templates, variables, signing secrets, retries with backoff, a delivery log, replay and saved deliveries, and inbound routes like Mailgun's.
- HTTP catcher: bins that capture any request your app sends (Slack, Discord, Teams, Telegram and more), with previews and mock responses, and a catch-all port (
--catcher-addr). - Projects: keep the mail, SMS and codes of several apps apart in one SendMock, picked by the SMTP username, a header or a URL prefix.
- For tests and CI: wait for the next email or SMS and read its code or link over the REST API, the CLI or MCP; reset to a seed file (
sendmock.seed.toml) before each run; and script whole flows as scenarios. Testcontainers modules for Node.js, Python, Go, Java and .NET start SendMock inside your tests. - Every feature in four ways: the web UI, a REST API described by OpenAPI, the
sendmockCLI with--jsonoutput, and an MCP server for AI agents.sendmock ai installsets SendMock up in Claude Code, Codex, Cursor, Gemini CLI or VS Code with its agent skill, and Claude Code users can install it as a plugin. - Retention: keep the newest 1,000 emails and 1,000 SMS by default, change the limits with
--max-emails,--max-smsor--max-age, or set a limit to 0 to keep everything (with a warning, since the database then grows until the disk is full). - Safe by default: SendMock listens on 127.0.0.1 only, can require a login (
--ui-auth) or an API token (--api-token), and masks secrets in the UI, API answers, logs and seed exports. - Install your way:
npx sendmockorbunx sendmockwith nothing installed, Docker (GHCR and Docker Hub, signed, with an SBOM), Homebrew, Scoop, WinGet, Chocolatey, apt, dnf, Nix, Cargo, an install script or a plain binary for macOS, Linux and Windows on x64 and Arm. A Helm chart, a Docker Desktop extension and a menu bar app are there too. - Docs: a guide for every screen and setting, a page that explains every control, recipes in nine languages, the API, CLI and MCP references and a live demo, at https://shibbirweb.github.io/sendmock/.
Fixed
- Live updates under load: the mail list keeps showing new mail while an app sends thousands of emails, and toasts and browser notifications show at most one every 2 seconds, saying how many more arrived.
- Package repository: the APT and YUM repository at https://shibbirweb.github.io/sendmock/packages/ is now published with each release, so
apt install sendmockanddnf install sendmockwith the beta component work as the install page shows. - npm and Maven Central: the
sendmockpackage on npm (fornpx sendmock@betaandbunx sendmock@beta) and the Java Testcontainers moduleio.github.shibbirweb:sendmock-testcontainerson Maven Central are published with each release.
SendMock 0.1.0-beta.2
Added
- SendMock catches the email, SMS, push notifications, payments and webhooks your app sends while you develop and test, and shows them in a web UI at http://127.0.0.1:8025. Your app talks to it over SMTP and the providers' own HTTP APIs, so nothing reaches a real inbox, phone or payment provider.
sendmock --demostarts it with sample data to look around. - Email: an SMTP server on port 1025 (with STARTTLS, AUTH and a size limit), the send APIs of SendGrid, Mailgun, Postmark, Resend, Amazon SES and Brevo, a native
POST /api/v1/send, asendmailshim and a Mailpit-compatible API. Each email shows its HTML, text, source, headers and attachments, with link and spam checks, and one-time codes and links pulled out for your tests. - Email outcomes: simulate delivered, bounced, deferred, spam complaint and unsubscribe, by hand or with outcome addresses and rules, and send the matching webhooks in each provider's own format. Reply, reply all or forward as the recipient to test inbound mail, and read the mailbox over POP3 (
--pop3-addr). - Release to a real inbox: send one real copy of a caught email through your SMTP relay, or forward arriving emails with auto-forward rules, only to the recipients you allow.
- SMS and verification codes: the APIs of Twilio (Messages, Messaging Services and Verify), Vonage (SMS and Verify v2), AWS SNS, Infobip, Sinch, Africa's Talking, MessageBird and Telnyx, shown as conversations with delivery status, status callbacks and replies. Twilio's official test numbers fail exactly as on Twilio, and WhatsApp Business Cloud API messages, media and webhooks work too.
- Push notifications: FCM HTTP v1, Expo and OneSignal sends, with an iOS and Android lock screen preview and magic tokens for each provider's failures.
- Payments: Stripe, PayPal, Razorpay, Paddle, bKash, SSLCommerz and your own gateways, with a hosted test checkout page, subscriptions, refunds and disputes, and simulated outcomes that send the provider's webhooks.
- Webhooks back to your app: rules that send Standard Webhooks or a provider's own format on any event, with templates, variables, signing secrets, retries with backoff, a delivery log, replay and saved deliveries, and inbound routes like Mailgun's.
- HTTP catcher: bins that capture any request your app sends (Slack, Discord, Teams, Telegram and more), with previews and mock responses, and a catch-all port (
--catcher-addr). - Projects: keep the mail, SMS and codes of several apps apart in one SendMock, picked by the SMTP username, a header or a URL prefix.
- For tests and CI: wait for the next email or SMS and read its code or link over the REST API, the CLI or MCP; reset to a seed file (
sendmock.seed.toml) before each run; and script whole flows as scenarios. Testcontainers modules for Node.js, Python, Go, Java and .NET start SendMock inside your tests. - Every feature in four ways: the web UI, a REST API described by OpenAPI, the
sendmockCLI with--jsonoutput, and an MCP server for AI agents.sendmock ai installsets SendMock up in Claude Code, Codex, Cursor, Gemini CLI or VS Code with its agent skill, and Claude Code users can install it as a plugin. - Retention: keep the newest 1,000 emails and 1,000 SMS by default, change the limits with
--max-emails,--max-smsor--max-age, or set a limit to 0 to keep everything (with a warning, since the database then grows until the disk is full). - Safe by default: SendMock listens on 127.0.0.1 only, can require a login (
--ui-auth) or an API token (--api-token), and masks secrets in the UI, API answers, logs and seed exports. - Install your way:
npx sendmockorbunx sendmockwith nothing installed, Docker (GHCR and Docker Hub, signed, with an SBOM), Homebrew, Scoop, WinGet, Chocolatey, apt, dnf, Nix, Cargo, an install script or a plain binary for macOS, Linux and Windows on x64 and Arm. A Helm chart, a Docker Desktop extension and a menu bar app are there too. - Docs: a guide for every screen and setting, a page that explains every control, recipes in nine languages, the API, CLI and MCP references and a live demo, at https://shibbirweb.github.io/sendmock/.
Fixed
- Live updates under load: the mail list keeps showing new mail while an app sends thousands of emails, and toasts and browser notifications show at most one every 2 seconds, saying how many more arrived.
- Package repository: the APT and YUM repository at https://shibbirweb.github.io/sendmock/packages/ is now published with each release, so
apt install sendmockanddnf install sendmockwith the beta component work as the install page shows.
SendMock 0.1.0-beta.1
Added
- SendMock catches the email, SMS, push notifications, payments and webhooks your app sends while you develop and test, and shows them in a web UI at http://127.0.0.1:8025. Your app talks to it over SMTP and the providers' own HTTP APIs, so nothing reaches a real inbox, phone or payment provider.
sendmock --demostarts it with sample data to look around. - Email: an SMTP server on port 1025 (with STARTTLS, AUTH and a size limit), the send APIs of SendGrid, Mailgun, Postmark, Resend, Amazon SES and Brevo, a native
POST /api/v1/send, asendmailshim and a Mailpit-compatible API. Each email shows its HTML, text, source, headers and attachments, with link and spam checks, and one-time codes and links pulled out for your tests. - Email outcomes: simulate delivered, bounced, deferred, spam complaint and unsubscribe, by hand or with outcome addresses and rules, and send the matching webhooks in each provider's own format. Reply, reply all or forward as the recipient to test inbound mail, and read the mailbox over POP3 (
--pop3-addr). - Release to a real inbox: send one real copy of a caught email through your SMTP relay, or forward arriving emails with auto-forward rules, only to the recipients you allow.
- SMS and verification codes: the APIs of Twilio (Messages, Messaging Services and Verify), Vonage (SMS and Verify v2), AWS SNS, Infobip, Sinch, Africa's Talking, MessageBird and Telnyx, shown as conversations with delivery status, status callbacks and replies. Twilio's official test numbers fail exactly as on Twilio, and WhatsApp Business Cloud API messages, media and webhooks work too.
- Push notifications: FCM HTTP v1, Expo and OneSignal sends, with an iOS and Android lock screen preview and magic tokens for each provider's failures.
- Payments: Stripe, PayPal, Razorpay, Paddle, bKash, SSLCommerz and your own gateways, with a hosted test checkout page, subscriptions, refunds and disputes, and simulated outcomes that send the provider's webhooks.
- Webhooks back to your app: rules that send Standard Webhooks or a provider's own format on any event, with templates, variables, signing secrets, retries with backoff, a delivery log, replay and saved deliveries, and inbound routes like Mailgun's.
- HTTP catcher: bins that capture any request your app sends (Slack, Discord, Teams, Telegram and more), with previews and mock responses, and a catch-all port (
--catcher-addr). - Projects: keep the mail, SMS and codes of several apps apart in one SendMock, picked by the SMTP username, a header or a URL prefix.
- For tests and CI: wait for the next email or SMS and read its code or link over the REST API, the CLI or MCP; reset to a seed file (
sendmock.seed.toml) before each run; and script whole flows as scenarios. Testcontainers modules for Node.js, Python, Go, Java and .NET start SendMock inside your tests. - Every feature in four ways: the web UI, a REST API described by OpenAPI, the
sendmockCLI with--jsonoutput, and an MCP server for AI agents.sendmock ai installsets SendMock up in Claude Code, Codex, Cursor, Gemini CLI or VS Code with its agent skill, and Claude Code users can install it as a plugin. - Retention: keep the newest 1,000 emails and 1,000 SMS by default, change the limits with
--max-emails,--max-smsor--max-age, or set a limit to 0 to keep everything (with a warning, since the database then grows until the disk is full). - Safe by default: SendMock listens on 127.0.0.1 only, can require a login (
--ui-auth) or an API token (--api-token), and masks secrets in the UI, API answers, logs and seed exports. - Install your way:
npx sendmockorbunx sendmockwith nothing installed, Docker (GHCR and Docker Hub, signed, with an SBOM), Homebrew, Scoop, WinGet, Chocolatey, apt, dnf, Nix, Cargo, an install script or a plain binary for macOS, Linux and Windows on x64 and Arm. A Helm chart, a Docker Desktop extension and a menu bar app are there too. - Docs: a guide for every screen and setting, a page that explains every control, recipes in nine languages, the API, CLI and MCP references and a live demo, at https://shibbirweb.github.io/sendmock/.