
Retry policies for outbound mail: backoff and give-up times
How long should a sender keep retrying a deferred message? Exponential backoff with jitter, sensible give-up windows and what to tell users meanwhile.
4 min read

How long should a sender keep retrying a deferred message? Exponential backoff with jitter, sensible give-up windows and what to tell users meanwhile.
4 min read

Point your app at a local SMTP catcher during development to see every message without risking real delivery. Setup, workflow and what it cannot test.
4 min read

Port 25 is for server-to-server relay, 587 and 465 are for submission, and 2525 is a common fallback. What each port expects and why clouds block 25.
4 min read

Since late 2025 Gmail rejects more non-compliant mail outright. How to read Gmail's SMTP replies, separate temporary from permanent, and fix the cause.
5 min read

Most email bugs with images and attachments are MIME tree bugs. Learn how multipart/alternative, related and mixed nest, with a correct example.
5 min read

A 5xx is not always permanent and a 4xx is not always harmless. Build bounce classification on reply codes and enhanced status codes, with exceptions.
4 min read

Gmail, Outlook and Yahoo each defer differently when you send too fast. Build per-destination queues and adaptive concurrency that respond to 4xx replies.
4 min read

Enhanced status codes like 5.1.1 and 4.7.0 say why delivery failed. Learn the class.subject.detail structure and the codes you will see most often.
5 min read

SMTP relays are universally compatible; HTTP APIs are easier to make idempotent and observable. Compare them on errors, retries, security and speed.
4 min read

Greylisting temporarily rejects unknown senders and expects a retry. How it works, what deferrals look like in logs and the retry behavior receivers expect.
4 min read

Talk to a mail server directly to see what it really says. Use swaks and openssl s_client to test auth, TLS, relaying and rejections step by step.
5 min read

Non-ASCII names, subjects and addresses need different mechanisms. How RFC 2047 encoded words, SMTPUTF8 and IDN domains fit together in practice.
4 min read