cloudflare-email-service

Send and receive transactional emails using Cloudflare Email Service bindings, REST API, and Email Routing.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires postal-mime, mimetext, agents, and includes references (resource) components.

What problem does it solve? Integrating transactional email into applications requires navigating Cloudflare Email Service setup, domain onboarding, binding configuration, and deliverability rules, where outdated knowledge leads to misconfigured sends and bounced messages. ## Core Features & Use Cases - Email Sending: Send transactional emails from Cloudflare Workers via the send_email binding, from external apps via the REST API, or from coding agents via wrangler CLI and MCP tools. - Email Routing & Receiving: Process inbound emails with the Workers email() handler, forward to verified destinations, parse MIME content with postal-mime, and build store-and-reply workflows with Durable Objects. - Deliverability Management: Configure SPF/DKIM/DMARC, monitor bounces and suppression lists, and query email analytics through the GraphQL Analytics API. - Use Case: Add a welcome email to a Cloudflare Worker by onboarding the domain with wrangler email sending enable, adding the send_email binding to wrangler.jsonc, and calling env.EMAIL.send() with HTML and text bodies. ## Quick Start Ask the agent to add email sending to your Cloudflare Worker using the send_email binding and the cloudflare-email-service skill.

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 name EMAIL, onboard your domain with wrangler email sending enable, then call env.EMAIL.send() with to, from, subject, html, and text fields. No API keys are needed for the Workers binding.

How do I send emails with the Cloudflare Email REST API?▼

POST to https://api.cloudflare.com/client/v4/accounts/{account_id}/email/sending/send with a Bearer API token. Note the REST API uses address instead of email in the from object and reply_to instead of replyTo.

What is the difference between the Workers binding and REST API for Cloudflare email?▼

The Workers binding uses email in the from object, replyTo in camelCase, and returns a messageId. The REST API uses address, reply_to in snake_case, and returns delivered, permanent_bounces, and queued arrays with numeric error codes.

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

The raw stream in a ForwardableEmailMessage is single-use, so a second read returns empty. Buffer it first with const raw = await new Response(message.raw).arrayBuffer() before parsing with postal-mime.

Can I use Cloudflare Email Service for marketing campaigns?▼

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

Why does email sending fail with E_SENDER_NOT_VERIFIED?▼

The from domain has not been onboarded to Email Sending. Run wrangler email sending enable yourdomain.com or onboard the domain in the Cloudflare Dashboard, which auto-configures SPF and DKIM records.