---
title: Cloudflare Email
description: Use a Cloudflare Workers send_email binding.
icon: Truck
source: "src/transports/cloudflare-email.ts"
---

Use a Cloudflare Workers send_email binding.

<Callout title="The one rule">Create this transport under the matching sently channel sender.</Callout>

## Configuration

| Option | Type | Default or requirement |
| --- | --- | --- |
| `sendEmail` | `CloudflareSendEmailFn` | required |

<Steps>
  <Step title="Configure the transport">

```ts
import { createMailer } from "sently/mailer";
import { CloudflareEmailTransport } from "sently/transports/cloudflare-email";

const sender = createMailer({ transport: new CloudflareEmailTransport({ sendEmail: env.SEND_EMAIL }) });
```

  </Step>
  <Step title="Send with the channel API">

```ts
await sender.send({ from: "hello@example.com", to: "person@example.com", subject: "Hello", text: "Hi" });
```

  </Step>
</Steps>

<Accordions><Accordion title="Should I call the provider SDK?">No. Use the sently sender; provider-specific extras stay on the transport instance.</Accordion></Accordions>

<Cards><Card title="Email channel" href="/docs/channels/email" /></Cards>
