Blog
Notes from the people who run the mail servers
Practical writing on transactional email: deliverability, DNS and authentication, migrations, and running email in production.
5 min read
DMARC fail: what it means and how to fix it
DMARC fails when neither SPF nor DKIM passes for a domain that matches your From address. How to read the headers, find the failing sender and fix each cause.
4 min read
How to send email with Python
Send email in Python with the standard library's smtplib and STARTTLS, or with an HTTP email API. Includes HTML, attachments, common errors and production tips.
3 min read
How to switch transactional email providers without downtime
A safe order for moving transactional email to a new provider. Set up DNS first, send through both providers for a while, then cut over with a rollback ready.
6 min read
Password reset email not received: a debugging checklist
When users don't get password reset emails, check whether it was sent, bounced or suppressed, landed in spam, failed authentication, or had its link used by a scanner.
5 min read
SMTP relay service: how to choose one
An SMTP relay service sends your app's email through authenticated, reputable mail servers. What to compare, when to use an HTTP API instead, and a setup example.
6 min read
Why are my emails going to spam?
Emails usually land in spam because of failed or unaligned SPF, DKIM and DMARC, a poor sender reputation or blocklisting, or high complaints. How to find which.
Put your transactional email on solid ground.
Start free on our transactional pool. Move to dedicated IPs or a dedicated server when you need the isolation. Same API either way.