Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
29cc079
feat: add wrangler email routing commands
thomasgauvin Mar 16, 2026
b8d1013
Add changeset for email routing commands (minor)
thomasgauvin Mar 17, 2026
135bbce
feat: address PR feedback and add email sending commands
thomasgauvin Mar 26, 2026
857e510
fix: address PR review comments for email routing commands
thomasgauvin Mar 26, 2026
f9c1f63
Merge branch 'main' into tgauvin/wrangler-email-routing-commands
thomasgauvin Mar 26, 2026
bc13d64
fix: add email_sending:write OAuth scope to DefaultScopes
thomasgauvin Mar 26, 2026
74b76fd
fix: resolve type errors and test failures in email routing commands
thomasgauvin Mar 26, 2026
b19c588
fix: use account-scoped email routing zones endpoint for list command
thomasgauvin Mar 26, 2026
0d3e24d
fix: align email routing API endpoints with dashboard implementation
thomasgauvin Mar 26, 2026
8eae009
fix: handle non-standard API error envelopes and fix dns-unlock output
thomasgauvin Mar 31, 2026
effeda9
fix: improve email routing CLI output and catch-all rule handling
thomasgauvin Apr 1, 2026
4434e45
fix(wrangler): show success message for email send/send-raw commands
thomasgauvin Apr 1, 2026
8b0e7a3
fix(wrangler): add status column to routing list and improve error ha…
thomasgauvin Apr 1, 2026
b21b795
refactor(wrangler): clean up email routing code
thomasgauvin Apr 1, 2026
236280d
chore: revert .vscode/launch.json changes
thomasgauvin Apr 2, 2026
4be8fb0
fix: import order — builtins before third-party in send.ts and send-r…
thomasgauvin Apr 2, 2026
b484f72
feat(wrangler): add email sending settings, enable, and disable commands
thomasgauvin Apr 2, 2026
94fa8f8
feat(wrangler): add email sending list command for symmetry with routing
thomasgauvin Apr 2, 2026
92b27d5
feat(wrangler): add zone:write OAuth scope for documented email routi…
thomasgauvin Apr 2, 2026
e97f2a7
Revert "feat(wrangler): add zone:write OAuth scope for documented ema…
thomasgauvin Apr 2, 2026
4073c0c
refactor(wrangler): flatten email sending commands — remove subdomain…
thomasgauvin Apr 2, 2026
0f1b70d
chore: update changeset for flattened email sending commands
thomasgauvin Apr 2, 2026
a46d781
fix: address review feedback for email routing commands
thomasgauvin Apr 2, 2026
bc60f8b
fix: validate header names and deduplicate send result logging
thomasgauvin Apr 2, 2026
3c29545
fix: add --zone-id support to sending commands, confirmation to disab…
thomasgauvin Apr 2, 2026
12883ab
refactor(wrangler): use positional domain arg for email routing commands
thomasgauvin Apr 2, 2026
95f08ca
fix: update changeset to show positional <domain> for routing commands
thomasgauvin Apr 2, 2026
6ccd53d
style: run oxfmt on email routing files
thomasgauvin Apr 2, 2026
ad68b07
test: add missing test coverage for email routing commands
thomasgauvin Apr 2, 2026
0384b13
fix: resolve multi-label TLD subdomain misclassification in resolveDo…
thomasgauvin Apr 2, 2026
b661aa4
test: update snapshots for new email OAuth scopes and command
thomasgauvin Apr 2, 2026
187a8d7
fix: clarify DNS unlock confirmation message with consequences
LuisDuarte1 Apr 2, 2026
d6a655a
Merge branch 'main' into tgauvin/wrangler-email-routing-commands
LuisDuarte1 Apr 2, 2026
0abedff
test: update dns unlock mockConfirm expectations to match new message
LuisDuarte1 Apr 2, 2026
ba1d4d6
Merge branch 'main' into tgauvin/wrangler-email-routing-commands
thomasgauvin Apr 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .changeset/email-service-commands.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
"wrangler": minor
---

feat: add `wrangler email routing` and `wrangler email sending` commands

Email Routing commands:

- `wrangler email routing list` - list zones with email routing status
- `wrangler email routing settings <domain>` - get email routing settings for a zone
- `wrangler email routing enable/disable <domain>` - enable or disable email routing
- `wrangler email routing dns get/unlock <domain>` - manage DNS records
- `wrangler email routing rules list/get/create/update/delete <domain>` - manage routing rules (use `catch-all` as the rule ID for the catch-all rule)
- `wrangler email routing addresses list/get/create/delete` - manage destination addresses

Email Sending commands:

- `wrangler email sending list` - list zones with email sending
- `wrangler email sending settings <domain>` - get email sending settings for a zone
- `wrangler email sending enable <domain>` - enable email sending for a zone or subdomain
- `wrangler email sending disable <domain>` - disable email sending for a zone or subdomain
- `wrangler email sending dns get <domain>` - get DNS records for a sending domain
- `wrangler email sending send` - send an email using the builder API
- `wrangler email sending send-raw` - send a raw MIME email message

Also adds `email_routing:write` and `email_sending:write` OAuth scopes to `wrangler login`.
4 changes: 2 additions & 2 deletions packages/wrangler/src/__tests__/deploy/core.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -726,7 +726,7 @@ describe("deploy", () => {
⛅️ wrangler x.x.x
──────────────────
Attempting to login via OAuth...
Opening a link in your default browser: https://dash.cloudflare.com/oauth2/auth?response_type=code&client_id=54d11594-84e4-41aa-b438-e81b8fa78ee7&redirect_uri=http%3A%2F%2Flocalhost%3A8976%2Foauth%2Fcallback&scope=account%3Aread%20user%3Aread%20workers%3Awrite%20workers_kv%3Awrite%20workers_routes%3Awrite%20workers_scripts%3Awrite%20workers_tail%3Aread%20d1%3Awrite%20pages%3Awrite%20zone%3Aread%20ssl_certs%3Awrite%20ai%3Awrite%20ai-search%3Awrite%20ai-search%3Arun%20queues%3Awrite%20pipelines%3Awrite%20secrets_store%3Awrite%20containers%3Awrite%20cloudchamber%3Awrite%20connectivity%3Aadmin%20offline_access&state=MOCK_STATE_PARAM&code_challenge=MOCK_CODE_CHALLENGE&code_challenge_method=S256
Opening a link in your default browser: https://dash.cloudflare.com/oauth2/auth?response_type=code&client_id=54d11594-84e4-41aa-b438-e81b8fa78ee7&redirect_uri=http%3A%2F%2Flocalhost%3A8976%2Foauth%2Fcallback&scope=account%3Aread%20user%3Aread%20workers%3Awrite%20workers_kv%3Awrite%20workers_routes%3Awrite%20workers_scripts%3Awrite%20workers_tail%3Aread%20d1%3Awrite%20pages%3Awrite%20zone%3Aread%20ssl_certs%3Awrite%20ai%3Awrite%20ai-search%3Awrite%20ai-search%3Arun%20queues%3Awrite%20pipelines%3Awrite%20secrets_store%3Awrite%20containers%3Awrite%20cloudchamber%3Awrite%20connectivity%3Aadmin%20email_routing%3Awrite%20email_sending%3Awrite%20offline_access&state=MOCK_STATE_PARAM&code_challenge=MOCK_CODE_CHALLENGE&code_challenge_method=S256
Successfully logged in.
Total Upload: xx KiB / gzip: xx KiB
Worker Startup Time: 100 ms
Expand Down Expand Up @@ -772,7 +772,7 @@ describe("deploy", () => {
⛅️ wrangler x.x.x
──────────────────
Attempting to login via OAuth...
Opening a link in your default browser: https://dash.staging.cloudflare.com/oauth2/auth?response_type=code&client_id=54d11594-84e4-41aa-b438-e81b8fa78ee7&redirect_uri=http%3A%2F%2Flocalhost%3A8976%2Foauth%2Fcallback&scope=account%3Aread%20user%3Aread%20workers%3Awrite%20workers_kv%3Awrite%20workers_routes%3Awrite%20workers_scripts%3Awrite%20workers_tail%3Aread%20d1%3Awrite%20pages%3Awrite%20zone%3Aread%20ssl_certs%3Awrite%20ai%3Awrite%20ai-search%3Awrite%20ai-search%3Arun%20queues%3Awrite%20pipelines%3Awrite%20secrets_store%3Awrite%20containers%3Awrite%20cloudchamber%3Awrite%20connectivity%3Aadmin%20offline_access&state=MOCK_STATE_PARAM&code_challenge=MOCK_CODE_CHALLENGE&code_challenge_method=S256
Opening a link in your default browser: https://dash.staging.cloudflare.com/oauth2/auth?response_type=code&client_id=54d11594-84e4-41aa-b438-e81b8fa78ee7&redirect_uri=http%3A%2F%2Flocalhost%3A8976%2Foauth%2Fcallback&scope=account%3Aread%20user%3Aread%20workers%3Awrite%20workers_kv%3Awrite%20workers_routes%3Awrite%20workers_scripts%3Awrite%20workers_tail%3Aread%20d1%3Awrite%20pages%3Awrite%20zone%3Aread%20ssl_certs%3Awrite%20ai%3Awrite%20ai-search%3Awrite%20ai-search%3Arun%20queues%3Awrite%20pipelines%3Awrite%20secrets_store%3Awrite%20containers%3Awrite%20cloudchamber%3Awrite%20connectivity%3Aadmin%20email_routing%3Awrite%20email_sending%3Awrite%20offline_access&state=MOCK_STATE_PARAM&code_challenge=MOCK_CODE_CHALLENGE&code_challenge_method=S256
Successfully logged in.
Total Upload: xx KiB / gzip: xx KiB
Worker Startup Time: 100 ms
Expand Down
Loading
Loading