---
title: "How to send email with Cloudflare Email Service"
url: https://daily.dev/posts/how-to-send-email-with-cloudflare-email-service-b58bo9wrj
source_url: https://flaviocopes.com/cloudflare-email-service
type: article
source: "Flavio Copes"
published: 2026-08-24T09:23:45.549Z
updated: 2026-08-24T09:24:05.533Z
tags: ["serverless", "cloudflare", "dns"]
reading_time: 5
upvotes: 0
comments: 0
language: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# How to send email with Cloudflare Email Service

**[Flavio Copes](https://daily.dev/sources/flaviocopes)** · 5 min read · 0 upvotes · 0 comments

## Summary

A walkthrough of Cloudflare Email Service, a beta feature letting Workers send transactional email without a third-party provider or API key via an env.EMAIL.send() binding. Covers onboarding a sending domain (DNS/SPF/DKIM/DMARC records), configuring the send_email binding in wrangler.jsonc, restricting allowed destination addresses, sending a welcome email example, simulating sends locally with wrangler dev versus real sends with remote: true, handling errors like E_SENDER_NOT_VERIFIED and E_RATE_LIMIT_EXCEEDED, and key limits (50 recipients, 5 MiB message size, daily quota that grows over time, with verified destination addresses exempt from quota).

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://flaviocopes.com/cloudflare-email-service>

## Questions this post answers

### How do I send an email from a Cloudflare Worker without using a third-party email API?

Add a send_email binding named EMAIL to wrangler.jsonc, then call env.EMAIL.send() with to, from, subject, html, and text fields inside the Worker. No API key is needed since Cloudflare's Email Service handles delivery natively, and the call returns a messageId for tracking in Cloudflare's logs.

_daily.dev surfaces practical Workers guides like this one for developers wiring up backend email flows._

### What does the E_SENDER_NOT_VERIFIED error mean in Cloudflare Email Service?

It means the sending domain has not finished onboarding in Email Service, so Cloudflare will not deliver mail from it yet. Other errors include E_RATE_LIMIT_EXCEEDED, which signals the account's daily sending quota was hit and the request should be retried later. Both are returned as an error.code property when the send call is wrapped in try...catch.

_Developers debugging Worker email failures can track these error codes and fixes on daily.dev._

### How can I test Cloudflare Worker email sending without actually sending real emails?

By default, running wrangler dev simulates the send_email binding: it logs the email and writes its content to local files instead of delivering it. To send a real email during local development instead, add remote: true to the binding configuration in wrangler.jsonc, which routes env.EMAIL.send() calls to the live Cloudflare Email Service.

_daily.dev helps developers stay current on Workers tooling like local email simulation in wrangler dev._

## Similar posts on daily.dev

- [Announcing Cloudflare Email Service’s private beta](https://daily.dev/posts/announcing-cloudflare-email-service-s-private-beta-gmthib6pk) · Cloudflare · 52 upvotes · 0 comments
- [Cloudflare Introduces Email Service to Compete with Amazon SES, Resend, and SendGrid](https://daily.dev/posts/cloudflare-introduces-email-service-to-compete-with-amazon-ses-resend-and-sendgrid-wblo5ljea) · InfoQ · 74 upvotes · 9 comments
- [Cloudflare Email Service: now in public beta. Ready for your agents](https://daily.dev/posts/cloudflare-email-service-now-in-public-beta-ready-for-your-agents-306i7lblb) · Cloudflare · 1 upvotes · 0 comments

---

Tags: [#serverless](https://daily.dev/tags/serverless), [#cloudflare](https://daily.dev/tags/cloudflare), [#dns](https://daily.dev/tags/dns)

[View this post on daily.dev](https://daily.dev/posts/how-to-send-email-with-cloudflare-email-service-b58bo9wrj)
