Skip to content

Cloudflare Email

hono-email/cloudflare provides CloudflareEmailAdapter and connectors for Cloudflare Email Service.

Use WorkersConnector when running inside a Cloudflare Worker:

import { Body, Html, Text, sendEmail } from 'hono-email'
import { CloudflareEmailAdapter } from 'hono-email/cloudflare'
import WorkersConnector from 'hono-email/cloudflare/workers'
export default {
async fetch(_request: Request, env: Env): Promise<Response> {
const receipt = await sendEmail({
adapter: CloudflareEmailAdapter({ connector: WorkersConnector }),
from: 'sender@example.com',
to: 'recipient@example.com',
subject: 'Welcome',
jsx: (
<Html>
<Body>
<Text>Hello from Cloudflare Workers.</Text>
</Body>
</Html>
),
})
return Response.json(receipt)
},
}

Use RESTConnector from other runtimes:

import { Body, Html, Text, sendEmail } from 'hono-email'
import { CloudflareEmailAdapter, RESTConnector } from 'hono-email/cloudflare'
const receipt = await sendEmail({
adapter: CloudflareEmailAdapter({
connector: RESTConnector({
accountId: process.env.CLOUDFLARE_ACCOUNT_ID!,
apiToken: process.env.CLOUDFLARE_API_TOKEN!,
}),
}),
from: { address: 'sender@example.com', name: 'Sender' },
to: ['first@example.com', 'second@example.com'],
subject: 'Welcome',
jsx: (
<Html>
<Body>
<Text>Hello from the Cloudflare REST API.</Text>
</Body>
</Html>
),
})
if (receipt.successful && receipt.queued) {
console.log('Queued recipients:', receipt.queuedRecipients)
}

For the full list of configuration options, see the Cloudflare Email Options API Reference.

Like all provider adapters, Cloudflare Email supports to, cc, bcc, replyTo, custom headers, and attachments. Inline attachments use cid when the provider supports content IDs.

Type: CloudflareEmailConnector

Cloudflare Email connector. Pass WorkersConnector when running inside a Cloudflare Worker, or RESTConnector(...) from other runtimes.

limits.maxAttachmentSize Optional

Section titled “limits.maxAttachmentSize ”

Type: number

Maximum attachment size in bytes.

import { RESTConnector } from 'hono-email/cloudflare'

Type: string

Your Cloudflare account ID.

Type: string

Cloudflare API token with Email Routing write permission.

Type: string

Override the Cloudflare API base URL.

Type: (input: string, init: RequestInit) => Promise<Response>

Custom fetch implementation.

import WorkersConnector from 'hono-email/cloudflare/workers'

WorkersConnector is a value (not a factory function) — pass it directly.

Type: string · Default: 'EMAIL'

Name of the Email Workers binding in your wrangler.toml.