Running in production · Edition No. 18 · 12 Sep 2026

usesend/useSend

Self-hosted alternative to Resend, SendGrid and Postmark — the sending layer Listmonk and Mautic both assume.

← Running in productionRead the whole edition →

4.7k stars · AGPL-3.0 · v1.9.8 (2026-08-30)

Self-hosted alternative to Resend, SendGrid and Postmark — the sending layer Listmonk and Mautic both assume.

Repo detailsthe review · specs · pros & cons · install

What it is

useSend is a self-hosted alternative to paid email services such as Resend, SendGrid and Postmark. It gives your app a simple way to ask for an email to be sent, and it hands the message to Amazon SES for delivery while keeping the record of it on your own server.What it is good for. Anyone whose product sends email to individual people, as opposed to a newsletter to a list. Edition 2 recommended Listmonk and Edition 10 recommended Mautic, and both of those write email but assume you already have something that delivers it. Edition 15 recommended Postal, which is the heavier answer: your own full mail server, and a request to Hetzner to unblock the outgoing mail port. useSend is the lighter answer, because Amazon does the delivering. Grasppy will need password resets and signup confirmations before it needs a newsletter.

Stars4.7k
LicenceAGPL-3.0
Latestv1.9.8 (2026-08-30)checked 7 Sep 2026
Written inTypeScript
Good
  • Sending through Amazon SES costs about ten cents per thousand emails, far below the usual monthly plans.
  • You keep the record of every message on your own server, including whether it arrived and whether it bounced.
  • It has a normal web interface plus a programming interface, so you are not reading a database by hand.
Watch for
  • It is licensed AGPL-3.0. Running it for your own business is fine. Building it into a product you sell means reading that licence carefully first.
  • It depends on Amazon SES, and getting an SES account out of Amazon's restricted starting mode takes a short application.
  • Email delivery still needs the boring domain settings done correctly. Edition 8's checkdmarc is the tool that tells you whether you got them right.
Install
mkdir -p ~/usesend && cd ~/usesend
curl -fsSL https://raw.githubusercontent.com/usesend/useSend/main/docker-compose.yml -o docker-compose.yml
# Read the file, then set your own values in an .env beside it:
#   DATABASE_URL, NEXTAUTH_SECRET, AWS_ACCESS_KEY, AWS_SECRET_KEY, AWS_DEFAULT_REGION
docker compose up -d
Screenshots
usesend/useSend: Screenshot 1usesend/useSend: Screenshot 2usesend/useSend: Screenshot 3usesend/useSend: Screenshot 4

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.