Guides for developers who send email
Guides on sending email from your stack, deliverability, DKIM, SPF and DMARC, webhooks, inbound email and broadcasts, written by the engineers who build Rasket.

Send email from Django: views, Celery and webhooks
Send email from Django with an API: the key in settings, a Celery task that retries with one idempotency key, and a CSRF-exempt webhook view for the events.

Send email from Rails: Action Mailer or an API
Send email from Rails with an API and no gem: a Net::HTTP service object, an Active Job that retries with one idempotency key, and a webhook controller.

Send email from Laravel: Mail or an HTTP API
Send email from Laravel with an API: the key in config/services.php, a queued job that retries with one idempotency key, and a webhook route excluded from CSRF.

Send email from Go: net/smtp or an HTTP API
Send email from Go with net/http: a client with a timeout, a typed error per refusal, retries that keep the idempotency key, and webhooks checked by hand.

DMARC policy: none vs quarantine vs reject
What p=none, p=quarantine and p=reject each ask a receiver to do, how pct, sp and rua shape the policy, how to read reports, and the safe order to move up.

Custom return path: why your bounces need it
What the return path is, how it differs from the From header, why putting it on your own subdomain makes SPF align under DMARC, and the two records that do it.

Double opt in email: how it works and why
How a double opt in email flow works: sign a confirmation link, verify the click, record the consent on the contact, and never mail anyone who did not confirm.

Newsletter API: send broadcasts from your code
Send a newsletter over an API in six calls: create a topic, add contacts with consent, build a segment, create the broadcast, pass the gate and read the report.

Schedule email API: send at a time you choose
Schedule an email over the API: an ISO 8601 scheduled_at up to 30 days out, a PATCH to move it, a cancel, and the time-zone mistakes to avoid.

Email API rate limits: headers and backoff
Email API rate limits at Rasket: 10 requests a second per team, the four headers, a 429 retried with the same key, and the quotas that are not rate limits.

Email template variables done right
How email template variables should work: declared with a type and a fallback, checked at send, versioned so each email records what it said, and HTML-escaped.

Email suppression list: what it is, how to use it
What an email suppression list holds, how bounces and complaints add to it, why a suppressed send still answers 200, and how to import a list from elsewhere.

Send email from Next.js: route handler or action
Send email from Next.js without leaking your API key: a route handler, a server action, the client-component trap, and a webhook that records what happened.

DKIM, SPF and DMARC explained for developers
What SPF, DKIM and DMARC each prove, the records to publish, how alignment ties them together, and what the large mailbox providers now require of senders.

Best transactional email API: seven compared
Seven transactional email APIs compared on inbound, broadcasts, webhooks, idempotency and price, with every competitor cell linked to the vendor's own page.

Email API vs SMTP: which should you use?
SMTP is a conversation; an email API is one request. What each gives you on retries, idempotency, events and firewalls, and how to move from one to the other.

Email webhooks explained: events and signatures
What an email webhook is, the delivery events and what fires each, the payload shape, verifying the signature, and handling retries and out-of-order events.

Hard bounce vs soft bounce: what to do with each
A hard bounce is permanent, a soft bounce is temporary. What causes each, what the reply code tells you, when to retry, and when to suppress an address.

Receive email with a webhook: inbound parsing
Point a domain's MX record at Rasket and incoming mail arrives as a signed JSON event: publishing the record, reading the payload, attachments and routing.

Email deliverability guide for developers
Delivered is not the same as inboxed. Authentication, domain reputation, list hygiene, the headers bulk senders need, and the numbers worth watching every week.

Send email from Python: smtplib or an API
Send email from Python without an SMTP conversation: the client library, a plain requests call, where the send belongs in Django and FastAPI, and retries.

Let an AI agent send email with MCP
Connect an assistant to an email API over MCP: what the server exposes, the scopes it asks for, the first call it makes, and the guardrails that keep it safe.

Idempotent email sends: never send twice
A timeout does not tell you whether the send happened. What an idempotency key is, how the 24-hour window behaves, how to choose keys, and what a batch does.

Email domain verification, step by step
What verifying a sending domain proves, which DNS records to publish, the name-suffix trap that catches everyone, and what to do when a record will not verify.

Send email from Node.js: API vs SMTP vs Nodemailer
Three ways to send email from Node.js — an HTTP API, SMTP and Nodemailer — what each one costs you, and a working send with retries and webhooks.

Transactional vs marketing email: how to send each
What separates transactional email from marketing email — the trigger, consent, unsubscribe headers and reputation — and how to send both from one API.
Every post is also plain Markdown — add .md to its URL — and the whole blog is an RSS feed.
Ready to send something?
Sign up, verify a domain and send your first email in minutes.