Blog

Notes on getting email delivered

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

Latest11 min read
Head to head card: free tiers — Resend 3,000 a month, SendGrid 60-day trial, Pigeonify 5,000 a month.

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
14 min read
Comparison card: 50,000 emails a month — Pigeonify $15, SendGrid $19.95, Resend $20, Mailgun $35.

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.

4 min read

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.

nodejsjavascriptapitutorial
4 min read

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.

pythonapismtptutorial
3 min read

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.

phpapismtptutorial
4 min read

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.

laravelphpsmtptutorial
4 min read

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.

nextjsreactjavascripttutorial
4 min read

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.

djangopythonsmtptutorial
3 min read

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.

nodejsnodemailersmtpcomparison
4 min read

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.

cloudflareworkersserverlesstutorial
4 min read

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.

supabasepostgresserverlesstutorial
5 min read

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.

golangapismtptutorial
2 min read

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.

DeliverabilityDNSAuthentication
2 min read

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.

DeliverabilityReputation
2 min read

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.

DeliverabilityArchitecture
2 min read

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.

DeliverabilityBounces
2 min read

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.

DeliverabilityReputation
2 min read

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.

ComplianceDeliverability
2 min read

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.

AnalyticsDeliverability
2 min read

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.

EngineeringAPI
11 min read

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.

DeliverabilityLists
2 min read

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.

EngineeringScale