Notes on getting email delivered
Authentication, reputation and the engineering behind sending at scale — written for the people who have to make it work.

Resend vs SendGrid (2026): Pricing, DX and a Third Option
Resend vs SendGrid in 2026: free tiers, pricing at 10k to 150k emails, developer experience, marketing email and log retention, plus a third option.
Read article
Best SendGrid Alternatives in 2026 (Pricing Compared)
Looking for a SendGrid alternative? We compare Pigeonify, Resend, Mailgun, Postmark, Amazon SES and Brevo on price, free tiers and migration effort.
How to send email with Node.js
Send transactional email from Node.js with the SDK, plain fetch, or SMTP — with the error handling and queueing that production actually needs.
How to send email with Python
Send transactional email from Python with requests or smtplib — including the error handling, retries and Django integration you need in production.
How to send email with PHP
Send transactional email from PHP without mail() — using cURL against a REST API or PHPMailer over SMTP, with error handling that works.
How to send email in Laravel
Configure Laravel's mail system to send through a dedicated provider, queue it properly, and handle failures — using the mailer you already have.
How to send email from Next.js
Send email from Next.js Route Handlers and Server Actions without leaking your API key to the browser, and without blocking the response.
How to send email in Django
Configure Django's email backend for a real provider, move sending to Celery, and use templates properly — without the defaults that send mail inside the request.
Nodemailer alternatives: when SMTP is not enough
Nodemailer is a transport, not a sending service. Where that distinction starts to hurt, and what to use instead.
How to send email from Cloudflare Workers
Workers cannot open SMTP connections at all. How to send email from a Worker using fetch, and how to keep your API key out of the script.
How to send email with Supabase
Supabase's built-in email is for auth only and heavily rate limited. How to send your own transactional email from Edge Functions and database triggers.
How to send email in Go
Send transactional email from Go with net/http or net/smtp — with timeouts, retries and context handling that match Go's conventions.
SPF, DKIM and DMARC, explained without the jargon
The three DNS records that decide whether your email reaches the inbox — what each one actually proves, and the order to set them up in.
Why your emails land in spam (and what actually fixes it)
Authentication is table stakes. Once it passes, placement comes down to engagement, list quality and consistency — here is how each one is judged.
Transactional vs marketing email: why the split matters
They look the same in code and behave completely differently in the inbox. Separating them protects the mail your product cannot function without.
Hard bounces, soft bounces, and what to do with each
Not every bounce means the same thing. Treating them identically either burns your reputation or loses you customers.
How to warm up a new sending domain
A fresh domain has no reputation, and sending as though it does is the fastest way to get filtered. A four-week schedule that works.
One-click unsubscribe is now mandatory. Here is how it works
Gmail and Yahoo require RFC 8058 one-click unsubscribe from bulk senders. It takes two headers and an endpoint that must not ask questions.
The email metrics worth watching (and the ones that lie)
Open rates have been unreliable since 2021. Here is what to measure instead, and the two numbers that decide whether you can send at all.
SMTP or API: which should you use to send email?
Both end up in the same inbox. They differ in latency, error handling and how much they tell you when something goes wrong.
List hygiene: the unglamorous work that keeps you in the inbox
Most deliverability problems are list problems. Cleaning yours feels like losing audience, and is usually the single highest-return thing you can do.
What breaks when you send 50,000 emails a day
Sending scale is rarely limited by the mail provider. It is limited by queueing, rate pacing and the parts of your system that assumed one email at a time.