EmailFlare wraps Cloudflare Email Sending with a clean REST API, scoped API keys, React Email templates, domain management, and a React admin UI — all shipped in a single Docker container.
Send an email with a single HTTP request. Reference a stored template, pass variables, and EmailFlare handles rendering, delivery, and logging.
subject and html directly.
X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset on every response.
Cloudflare Email Sending is powerful infrastructure. EmailFlare gives it the API layer, UI, and tooling that makes it ready for production teams.
Generate per-domain or multi-domain API keys from the dashboard. Your Cloudflare API token never leaves the server — application code only ever sees an EmailFlare key.
Store reusable HTML templates with {{variable}} interpolation, plain-text versions, and named React Email layouts. Send by template ID — not inline HTML strings.
Every send is logged — recipient, sender, template used, API key, Cloudflare message ID, status, and error detail. Debug delivery without guessing which email was sent when.
Provision Cloudflare sending subdomains, inspect DKIM and return-path DNS records, and verify domain status — all from the admin dashboard instead of juggling API calls.
Per-key rate limiting is enforced at the API middleware layer. Rogue callers can't flood your Cloudflare quota. Limits and reset times are returned on every response.
Backend, admin UI, and embedded SQLite storage are bundled in one Docker image. No Postgres, no Redis, no separate services to run. Mount one volume and deploy.
Cloudflare Email Sending is excellent infrastructure — but it's a low-level API. EmailFlare is the application layer that makes it production-ready.
| Capability | Direct Cloudflare API | EmailFlare |
|---|---|---|
| Send emails over HTTP | ⚠ Complex auth, manual payload | ✓ Simple POST /v1/send |
| API key management | ✗ Use root CF token in code | ✓ Scoped keys, per-domain |
| Email templates | ✗ Build and host yourself | ✓ 20 layouts, variable interpolation |
| Send logs | ✗ No delivery visibility | ✓ Full history with status & errors |
| Domain setup UI | ✗ Cloudflare dashboard only | ✓ Dedicated domain manager |
| DNS record inspection | ⚠ CF dashboard or API only | ✓ In-app DNS record view |
| Rate limiting | ✗ Implement it yourself | ✓ Per-key, headers included |
| Email preview & playground | ✗ Not available | ✓ In-dashboard test & preview |
| Admin dashboard | ✗ Cloudflare dashboard only | ✓ Dedicated React admin UI |
| Self-hosted on your infra | ⚠ Vendor-managed only | ✓ One container, your server |
EmailFlare ships with the full stack of tools for reliable transactional email — not just a thin delivery wrapper.
Add sending domains, provision Cloudflare subdomains, view DKIM and return-path DNS records, and track verification status — no CLI required.
Admin UICreate keys with global, per-domain, or multi scope. SHA-256 hashed at rest. Only the prefix is shown after creation — the full key is never stored.
Store HTML templates with {{var}} interpolation, optional plain-text fallbacks, and an optional named layout. Send by template ID — skip the inline HTML.
20 production-ready React Email layouts ship out of the box — from Welcome and Magic Link to Invoice, Order Confirm, Trial Ending, and Team Invite.
React EmailEvery delivery is logged with recipient, sender, template, API key, Cloudflare message ID, status, and error detail. Dashboard stats give you a live summary.
ObservabilityPer API-key rate limiting enforced at the middleware layer. Standard X-RateLimit-* response headers on every send request — no extra config.
Test email sends and preview rendered templates right from the admin UI before they hit a real recipient. Catch rendering issues without burning send quota.
Developer UXPowered by mesahub-core — embedded SQLite runs inside the container, no external database. Mount a volume at /data and persistence is handled.
Ships with a root railway.json for GitHub-connected Railway deploys, and a published image at ghcr.io/0xdps/emailflare:latest for image-based deploys.
Create a test API key in the admin UI and all sends route through SMTP instead of Cloudflare — no CF credentials required. Point SMTP_HOST/SMTP_PORT at any catcher (Mailpit, Mailtrap, etc.). The dev compose stack bundles Mailpit automatically.
Every layout is a React Email component with documented variables. Use them as-is or as a starting point for your own templates.
EmailFlare ships two compose stacks — compose.yaml for production and compose.dev.yaml for local development — with Mailpit included so emails never hit real inboxes during testing.
Copy the example env file and fill in your Cloudflare credentials, admin token, and session secret. The MESAHUB_URL setting controls where data is stored — the default keeps everything local.
Bring up the production compose stack. The image is published to GHCR — no local build required. Or use just prod if you have Just installed.
Verify the health endpoint, open the admin UI, add your first domain, and generate an API key. Mailpit is included for safe email testing in dev.
EmailFlare has first-class test mode: test API keys route sends through SMTP instead of the Cloudflare Email Sending API — no CF credentials required.
Point SMTP_HOST and SMTP_PORT at any SMTP catcher
(Mailpit, Mailtrap, etc.) — this works on Railway, Docker, or any other deployment.
For local dev, compose.dev.yaml bundles Mailpit automatically;
the UI is accessible at http://localhost:8090/mailpit/.
The repo ships with a pre-configured railway.json.
Create a new Railway project from the GitHub repository, add the required environment variables,
attach a volume at /data, and deploy.
Or use the published image ghcr.io/0xdps/emailflare:latest on any platform.
EmailFlare is intentionally simple to operate. No orchestration overhead, no extra services, no surprise dependencies.
/data. No external database to provision or back up separately.
compose.dev.yaml.
MESAHUB_URL with an external mesahub instance if you ever need to split storage out of the app container.
CREATE TABLE IF NOT EXISTS on first boot. No migration framework, no manual schema setup, no CLI commands to run.
EmailFlare is fully open source. Read the code, contribute, file issues, or fork it for your own needs — no strings attached.