This skill provides comprehensive and secure guidance for using the Cloudflare Email Service. It follows industry best practices for credential management, references official documentation, and includes architectural advice for safely handling incoming data.
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
Claude CodeDeclared
CursorDeclared
CodexNot declared
GitHub CopilotDeclared
WindsurfNot declared
Gemini CLINot declared
ClineNot declared
OpenCodeNot declared
Repository health
Stars2.8K
LicenseLICENSE
Default branchmain
Open issues8
Status
Active
Skill metadata
Parsed from SKILL.md frontmatter.
Declared agentsclaude-codecursorgithub-copilot
Package contents
Files included with this skill beyond the listing page.
skill mdSKILL.md6,586 B
docsSUMMARY.md3,969 B
History
First seen on skills.sh
First recorded snapshot · 60,100 installs
SKILL.md
Cloudflare Email Service
Your knowledge of the Cloudflare Email Service, Email Routing or Email Sending may be outdated. Prefer retrieval over pre-training for any Cloudflare Email Service task.
Cloudflare Email Service lets you send transactional emails and route incoming emails, all within the Cloudflare platform. Your knowledge of this product may be outdated — it launched in 2025 and is evolving rapidly. Prefer retrieval over pre-training for any Email Service task.
If there is any discrepancy between this skill and the sources below, always trust the original source. The Cloudflare docs, REST API spec, @cloudflare/workers-types, and Agents SDK repo are the source of truth. This skill is a convenience guide — it may lag behind the latest changes. When in doubt, retrieve from the sources below and use what they say.
Retrieval Sources
Source
How to retrieve
Use for
Cloudflare docs
Cloudflare MCP docs tool or URL https://developers.cloudflare.com/email-service/
Before writing any email code, verify the basics are in place:
Domain onboarded? Run npx wrangler email sending list to see which domains have email sending enabled. If the domain isn't listed, run npx wrangler email sending enable userdomain.com or see [cli-and-mcp.md](references/cli-and-mcp.md) for full setup instructions.
Binding configured? Look for send_email in wrangler.jsonc (for Workers)
postal-mime installed? Run npm ls postal-mime (only needed for receiving/parsing emails)
What Do You Need?
Start here. Find your situation, then follow the link for full details.
Prefer the binding for Workers; use REST for external apps or when explicitly requested. Read [sending.md](references/sending.md) or [rest-api.md](references/rest-api.md) to retrieve the documentation for the selected task before writing code. These guides cover setup, recipients, attachments, headers, limits, response handling, and errors; the Workers guide also covers Agents SDK integration and types matched to the project configuration.
Common Mistakes
Mistake
Why It Happens
Fix
Forgetting send_email binding in wrangler config
Email Service uses a binding, not an API key
Add "send_email": [{ "name": "EMAIL" }] to wrangler.jsonc
Sending from an unverified domain
Domain must be onboarded onto Email Sending before first send
Run wrangler email sending enable yourdomain.com or onboard in Dashboard
Reading message.raw twice in email handler
The raw stream is single-use — second read returns empty
Buffer first: const raw = await new Response(message.raw).arrayBuffer()
Missing text field (HTML only)
Some email clients only show plain text; also helps spam scores
Always include both html and text versions
Using email for marketing/bulk sends
Email Service is for transactional email only
Use a dedicated marketing email platform for newsletters and campaigns
Forwarding to unverified destinations
message.forward() only works with verified addresses
Run wrangler email routing addresses create [email protected] or add in Dashboard
Testing with fake addresses
Bounces from non-existent addresses hurt sender reputation
Use real addresses you control during development
Hardcoding API tokens in source code
Tokens in code get committed and leaked
Use environment variables or Cloudflare secrets
Ignoring the from domain requirement
The from address must use a domain onboarded to Email Service