cloudflare-email-service

Implement and troubleshoot Cloudflare Email Sending and Email Routing integrations.

1|Updated Jul 2, 2026
One-click install
npx skills add https://github.com/filippolmt/skills --skill cloudflare-email-service-filippolmt
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: cloudflare-email-service
Source: https://github.com/filippolmt/skills/tree/main/skills/cloudflare-email-service
Command: npx skills add https://github.com/filippolmt/skills --skill cloudflare-email-service-filippolmt

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires postal-mime, mimetext, @cloudflare/workers-types, and includes references (resource) components.

What problem does it solve? Cloudflare Email Service launched in 2025 and evolves rapidly, so pre-trained knowledge of its APIs, bindings, and configuration is often outdated or wrong. This Skill guides implementation and troubleshooting of transactional email sending and inbound email routing on Cloudflare by pointing to current documentation and flagging common mistakes. ## Core Features & Use Cases - Sending Emails: Configure the send_email Workers binding, use the REST API with Bearer tokens for external apps, or send via wrangler CLI and MCP tools from coding agents. - Receiving Emails: Build Workers email() handlers for Email Routing with forwarding, replying, rejecting, and MIME parsing via postal-mime, including store-and-reply-later patterns with Durable Objects. - Deliverability & Operations: Manage SPF/DKIM/DMARC, bounce handling, suppression lists, sending limits, and GraphQL analytics for delivery monitoring. - Use Case: A developer needs their Cloudflare Worker to send order confirmation emails and process inbound support replies. The Skill walks them through domain onboarding, binding configuration, handler code, and deliverability checks while avoiding pitfalls like reading message.raw twice. ## Quick Start Ask the agent to set up Cloudflare Email Sending for your domain and write a Worker that sends a transactional email using the send_email binding.

Frequently Asked Questions about cloudflare-email-service

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I send emails from a Cloudflare Worker?

Add a send_email binding to wrangler.jsonc with a name like EMAIL, then call env.EMAIL.send() with to, from, subject, html, and text fields. The from address must use a domain onboarded to Email Sending via wrangler email sending enable.

How do I receive and parse incoming emails with Cloudflare Email Routing?

Export an email() handler from your Worker and create a routing rule connecting addresses to it. Buffer message.raw once with new Response(message.raw).arrayBuffer(), then parse it with postal-mime to extract subject, text, and attachments.

Should I use the Workers binding or the REST API for Cloudflare email sending?

Use the Workers binding for code running inside Workers since it needs no API keys. Use the REST API with a Bearer token for external applications in Node.js, Go, or Python, noting it uses address instead of email and reply_to instead of replyTo.

Why does reading message.raw twice return empty in an email handler?

The raw MIME stream is single-use, so a second read returns nothing. Buffer it first with const raw = await new Response(message.raw).arrayBuffer() before parsing or forwarding.

Can I use Cloudflare Email Service for marketing or bulk email campaigns?

No, Email Service is restricted to transactional email triggered by user actions like signups, password resets, and order confirmations. Marketing newsletters and bulk campaigns require a dedicated marketing email platform.

Why does message.forward() fail silently in Email Routing?

Forwarding only works to verified destination addresses. Verify the destination first with wrangler email routing addresses create or through the Dashboard before forwarding.