Email delivers account verification links, password resets, form notifications and replies, and messages sent from the admin Email page.
pnpm run update -- --emailSet EMAIL_PROVIDER to select a provider:
| Value | Also needed |
|---|---|
| unset (default) | Nothing. Messages are logged, not delivered. |
resend |
EMAIL_FROM on a domain verified in Resend, and the RESEND_API_KEY secret |
cloudflare |
EMAIL_FROM, a [[send_email]] binding named EMAIL in wrangler.toml, and wrangler email sending enable to verify the sending domain |
pnpm run update -- --email writes EMAIL_PROVIDER and EMAIL_FROM and stores the Resend key as a secret. For cloudflare it cannot do the binding or the domain verification for you: add the binding and run the command yourself.
[[send_email]]name = "EMAIL"Also set ADMIN_URL (setup sets it automatically) so links point at your admin. A blank answer at the Resend key prompt keeps the existing key. It never writes an empty secret.
GET /api/v1/system/status reports emailConfigured, checking the complete configuration for the chosen provider. It is a static check, not a live send test.
Checking emails locally
Section titled “Checking emails locally”To see every email your local CMS would send, attachments included, run wrangler dev with the Cloudflare provider and a local binding: add a [[send_email]] block with name = "EMAIL" to the config you run locally, and pass --var EMAIL_PROVIDER:cloudflare. Nothing is delivered. For each email, Wrangler logs the sender, recipient and subject, and writes the text body, HTML body and each attachment to local files whose paths it prints. This runs the same sending code as production, so it’s a quick way to check a reply’s attachment, a link in a template, or who a notification went to.
Without email
Section titled “Without email”Nothing breaks. The message that would have been sent is written to the Worker logs. Read it with wrangler tail (deployed) or the wrangler dev terminal (local). This is how you verify accounts before email is set up. Configure a real provider before launching a site with sign-in.