@cakemail-org/cakemail-cli 1.7.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +12 -0
- package/.env.example +40 -0
- package/.env.test.example +45 -0
- package/CHANGELOG.md +1031 -0
- package/README.md +41 -37
- package/audit-formats.js +128 -0
- package/cakemail.rb +20 -0
- package/dist/client.js +1 -1
- package/dist/client.js.map +1 -1
- package/dist/commands/account.js +1 -1
- package/dist/commands/account.js.map +1 -1
- package/dist/commands/attributes.js +1 -1
- package/dist/commands/attributes.js.map +1 -1
- package/dist/commands/campaigns.js +1 -1
- package/dist/commands/campaigns.js.map +1 -1
- package/dist/commands/contacts.js +1 -1
- package/dist/commands/contacts.js.map +1 -1
- package/dist/commands/emails.js +1 -1
- package/dist/commands/emails.js.map +1 -1
- package/dist/commands/interests.js +1 -1
- package/dist/commands/interests.js.map +1 -1
- package/dist/commands/lists.js +1 -1
- package/dist/commands/lists.js.map +1 -1
- package/dist/commands/logs.js +1 -1
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/reports.js +1 -1
- package/dist/commands/reports.js.map +1 -1
- package/dist/commands/segments.js +1 -1
- package/dist/commands/segments.js.map +1 -1
- package/dist/commands/senders.js +1 -1
- package/dist/commands/senders.js.map +1 -1
- package/dist/commands/suppressed.js +1 -1
- package/dist/commands/suppressed.js.map +1 -1
- package/dist/commands/tags.js +1 -1
- package/dist/commands/tags.js.map +1 -1
- package/dist/commands/templates.js +1 -1
- package/dist/commands/templates.js.map +1 -1
- package/dist/commands/transactional-templates.js +1 -1
- package/dist/commands/transactional-templates.js.map +1 -1
- package/dist/commands/webhooks.js +1 -1
- package/dist/commands/webhooks.js.map +1 -1
- package/dist/utils/config.js +2 -2
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/errors.js +1 -1
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/progress.d.ts.map +1 -1
- package/dist/utils/progress.js +32 -4
- package/dist/utils/progress.js.map +1 -1
- package/dist/utils/spinner.d.ts +17 -0
- package/dist/utils/spinner.d.ts.map +1 -0
- package/dist/utils/spinner.js +43 -0
- package/dist/utils/spinner.js.map +1 -0
- package/docs/DOCUMENTATION-STANDARD.md +1068 -0
- package/docs/README.md +161 -0
- package/docs/developer/ARCHITECTURE.md +516 -0
- package/docs/developer/AUTH.md +204 -0
- package/docs/developer/CONTRIBUTING.md +227 -0
- package/docs/developer/DOCUMENTATION_SUMMARY.md +346 -0
- package/docs/developer/PROJECT_INDEX.md +365 -0
- package/docs/planning/API_COVERAGE.md +1045 -0
- package/docs/planning/BACKLOG.md +1159 -0
- package/docs/planning/PROFILE_SYSTEM_TASKS.md +287 -0
- package/docs/planning/UX_IMPLEMENTATION_PLAN.md +691 -0
- package/docs/planning/archive/RELEASE_CHECKLIST_v1.3.0.md +332 -0
- package/docs/planning/archive/RELEASE_v1.3.0.md +428 -0
- package/docs/planning/archive/cakemail-cli-ux-improvements.md +438 -0
- package/docs/planning/cakemail-profile-system-plan.md +1121 -0
- package/docs/testing/AI_USER_SIMULATION_DESIGN.md +1342 -0
- package/docs/testing/KENOGAMI_BIDIRECTIONAL_FLOW.md +1517 -0
- package/docs/testing/KENOGAMI_TRUTH_RECONCILIATION_SYSTEM.md +1369 -0
- package/docs/user-manual/.obsidian/app.json +1 -0
- package/docs/user-manual/.obsidian/appearance.json +1 -0
- package/docs/user-manual/.obsidian/core-plugins.json +33 -0
- package/docs/user-manual/.obsidian/workspace.json +167 -0
- package/docs/user-manual/01-getting-started/01-installation.md +214 -0
- package/docs/user-manual/01-getting-started/02-quick-start.md +432 -0
- package/docs/user-manual/01-getting-started/03-authentication.md +448 -0
- package/docs/user-manual/01-getting-started/04-configuration.md +430 -0
- package/docs/user-manual/01-getting-started/05-output-formats.md +447 -0
- package/docs/user-manual/02-core-concepts/01-accounts.md +514 -0
- package/docs/user-manual/02-core-concepts/02-profile-system.md +771 -0
- package/docs/user-manual/02-core-concepts/03-smart-defaults.md +485 -0
- package/docs/user-manual/02-core-concepts/04-authentication-methods.md +435 -0
- package/docs/user-manual/02-core-concepts/05-pagination-filtering.md +600 -0
- package/docs/user-manual/02-core-concepts/06-error-handling.md +718 -0
- package/docs/user-manual/02-core-concepts/07-api-coverage.md +483 -0
- package/docs/user-manual/03-email-operations/01-senders.md +490 -0
- package/docs/user-manual/03-email-operations/02-templates.md +444 -0
- package/docs/user-manual/03-email-operations/03-transactional-emails.md +706 -0
- package/docs/user-manual/03-email-operations/04-email-tracking.md +407 -0
- package/docs/user-manual/04-campaign-management/01-campaigns-basics.md +394 -0
- package/docs/user-manual/04-campaign-management/02-campaign-scheduling.md +630 -0
- package/docs/user-manual/04-campaign-management/03-campaign-testing.md +997 -0
- package/docs/user-manual/04-campaign-management/04-campaign-lifecycle.md +709 -0
- package/docs/user-manual/04-campaign-management/05-campaign-links.md +934 -0
- package/docs/user-manual/05-contact-management/01-lists.md +836 -0
- package/docs/user-manual/05-contact-management/02-contacts.md +1035 -0
- package/docs/user-manual/05-contact-management/03-custom-attributes.md +788 -0
- package/docs/user-manual/05-contact-management/04-segments.md +1028 -0
- package/docs/user-manual/05-contact-management/05-contact-import-export.md +1031 -0
- package/docs/user-manual/06-analytics-reporting/01-campaign-analytics.md +867 -0
- package/docs/user-manual/06-analytics-reporting/02-account-reports.md +227 -0
- package/docs/user-manual/07-integrations/01-webhooks-integration.md +259 -0
- package/docs/user-manual/07-integrations/02-automation.md +326 -0
- package/docs/user-manual/08-advanced-usage/01-scripting-patterns.md +672 -0
- package/docs/user-manual/08-advanced-usage/02-bulk-operations.md +932 -0
- package/docs/user-manual/08-advanced-usage/03-ci-cd-integration.md +892 -0
- package/docs/user-manual/08-advanced-usage/04-performance-optimization.md +766 -0
- package/docs/user-manual/09-command-reference/01-config.md +776 -0
- package/docs/user-manual/09-command-reference/02-account.md +652 -0
- package/docs/user-manual/09-command-reference/03-lists.md +958 -0
- package/docs/user-manual/09-command-reference/04-contacts.md +1408 -0
- package/docs/user-manual/09-command-reference/05-attributes.md +617 -0
- package/docs/user-manual/09-command-reference/06-segments.md +894 -0
- package/docs/user-manual/09-command-reference/07-senders.md +803 -0
- package/docs/user-manual/09-command-reference/08-templates.md +818 -0
- package/docs/user-manual/09-command-reference/09-campaigns.md +1250 -0
- package/docs/user-manual/09-command-reference/10-emails.md +807 -0
- package/docs/user-manual/09-command-reference/11-reports.md +1135 -0
- package/docs/user-manual/09-command-reference/12-webhooks.md +773 -0
- package/docs/user-manual/09-command-reference/13-suppressed.md +797 -0
- package/docs/user-manual/09-command-reference/14-interests.md +630 -0
- package/docs/user-manual/09-command-reference/15-tags.md +584 -0
- package/docs/user-manual/09-command-reference/16-logs.md +656 -0
- package/docs/user-manual/09-command-reference/17-transactional-templates.md +850 -0
- package/docs/user-manual/10-troubleshooting/01-common-errors.md +457 -0
- package/docs/user-manual/10-troubleshooting/02-authentication-issues.md +558 -0
- package/docs/user-manual/10-troubleshooting/03-connection-problems.md +634 -0
- package/docs/user-manual/10-troubleshooting/04-debugging.md +725 -0
- package/docs/user-manual/11-appendix/04-faq.md +484 -0
- package/docs/user-manual/11-appendix/05-glossary.md +250 -0
- package/docs/user-manual/README.md +0 -0
- package/package.json +13 -61
- package/src/cli.ts +125 -0
- package/src/client.ts +16 -0
- package/src/commands/account.ts +267 -0
- package/src/commands/accounts.ts +78 -0
- package/src/commands/actions.ts +249 -0
- package/src/commands/attributes.ts +139 -0
- package/src/commands/campaign-blueprints.ts +106 -0
- package/src/commands/campaigns.ts +469 -0
- package/src/commands/config.ts +77 -0
- package/src/commands/contacts.ts +612 -0
- package/src/commands/custom-attributes.ts +127 -0
- package/src/commands/dkims.ts +117 -0
- package/src/commands/domains.ts +82 -0
- package/src/commands/email-apis.ts +569 -0
- package/src/commands/emails.ts +197 -0
- package/src/commands/forms.ts +283 -0
- package/src/commands/interests.ts +155 -0
- package/src/commands/links.ts +38 -0
- package/src/commands/lists.ts +406 -0
- package/src/commands/logos.ts +71 -0
- package/src/commands/logs.ts +386 -0
- package/src/commands/reports.ts +306 -0
- package/src/commands/segments.ts +158 -0
- package/src/commands/senders.ts +204 -0
- package/src/commands/sub-accounts.ts +271 -0
- package/src/commands/suppressed-emails.ts +234 -0
- package/src/commands/suppressed.ts +198 -0
- package/src/commands/system-emails.ts +85 -0
- package/src/commands/tags.ts +146 -0
- package/src/commands/tasks.ts +116 -0
- package/src/commands/templates.ts +189 -0
- package/src/commands/tokens.ts +83 -0
- package/src/commands/transactional-emails.ts +374 -0
- package/src/commands/transactional-templates.ts +385 -0
- package/src/commands/users.ts +506 -0
- package/src/commands/webhooks.ts +172 -0
- package/src/commands/workflow-blueprints.ts +123 -0
- package/src/commands/workflows.ts +265 -0
- package/src/types/profile.ts +93 -0
- package/src/utils/auth.ts +272 -0
- package/src/utils/config-file.ts +96 -0
- package/src/utils/config.ts +134 -0
- package/src/utils/confirm.ts +32 -0
- package/src/utils/defaults.ts +99 -0
- package/src/utils/errors.ts +116 -0
- package/src/utils/interactive.ts +91 -0
- package/src/utils/list-defaults.ts +74 -0
- package/src/utils/output.ts +190 -0
- package/src/utils/progress.ts +320 -0
- package/src/utils/spinner.ts +22 -0
- package/tests/IMPLEMENTATION_STATUS.md +258 -0
- package/tests/PTY_SETUP.md +118 -0
- package/tests/PTY_TESTING_GUIDE.md +507 -0
- package/tests/README.md +244 -0
- package/tests/fixtures/api-responses/campaigns.json +34 -0
- package/tests/fixtures/test-config.json +13 -0
- package/tests/helpers/cli-runner.ts +128 -0
- package/tests/helpers/mock-server.ts +301 -0
- package/tests/helpers/pty-runner.ts +181 -0
- package/tests/integration/campaigns-real-api.test.ts +196 -0
- package/tests/integration/setup-integration.ts +50 -0
- package/tests/pty/campaigns.test.ts +241 -0
- package/tests/setup.ts +34 -0
- package/tsconfig.json +15 -0
- package/vitest.config.ts +28 -0
|
@@ -0,0 +1,803 @@
|
|
|
1
|
+
# Sender Commands
|
|
2
|
+
|
|
3
|
+
Manage verified email sender identities for campaigns and transactional emails.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Sender commands allow you to:
|
|
8
|
+
- Create and verify sender email addresses
|
|
9
|
+
- List all sender identities
|
|
10
|
+
- Update sender information
|
|
11
|
+
- Delete unused senders
|
|
12
|
+
- Confirm sender email addresses via verification link
|
|
13
|
+
- Resend verification emails
|
|
14
|
+
|
|
15
|
+
Verified senders are required for sending campaigns and transactional emails. Email service providers require sender verification to prevent spam and ensure deliverability.
|
|
16
|
+
|
|
17
|
+
## Commands
|
|
18
|
+
|
|
19
|
+
- [senders list](#senders-list) - List all senders
|
|
20
|
+
- [senders get](#senders-get) - Get sender details
|
|
21
|
+
- [senders create](#senders-create) - Create a new sender
|
|
22
|
+
- [senders update](#senders-update) - Update sender information
|
|
23
|
+
- [senders delete](#senders-delete) - Delete a sender
|
|
24
|
+
- [senders confirm](#senders-confirm) - Confirm sender email
|
|
25
|
+
- [senders resend-confirmation](#senders-resend-confirmation) - Resend verification email
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## senders list
|
|
30
|
+
|
|
31
|
+
List all sender identities in your account with filtering and sorting.
|
|
32
|
+
|
|
33
|
+
### Usage
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
cakemail senders list [options]
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Options
|
|
40
|
+
|
|
41
|
+
- `-l, --limit <number>` - Limit number of results per page
|
|
42
|
+
- `-p, --page <number>` - Page number (default: 1)
|
|
43
|
+
- `--sort <sort>` - Sort order (e.g., `+name`, `+email`, `-confirmed`)
|
|
44
|
+
- `--filter <filter>` - Filter expression (e.g., `confirmed==true`)
|
|
45
|
+
|
|
46
|
+
### Examples
|
|
47
|
+
|
|
48
|
+
**List all senders:**
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
$ cakemail senders list
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Output:**
|
|
55
|
+
```
|
|
56
|
+
┌────────┬────────────────────┬─────────────────────┬───────────┬─────────────────────┐
|
|
57
|
+
│ ID │ Name │ Email │ Confirmed │ Created │
|
|
58
|
+
├────────┼────────────────────┼─────────────────────┼───────────┼─────────────────────┤
|
|
59
|
+
│ 101 │ Newsletter Team │ news@example.com │ ✓ │ 2024-01-15 10:30:00 │
|
|
60
|
+
│ 102 │ Support │ support@example.com │ ✓ │ 2024-02-01 14:20:00 │
|
|
61
|
+
│ 103 │ Marketing │ promo@example.com │ ✗ │ 2024-03-10 09:15:00 │
|
|
62
|
+
└────────┴────────────────────┴─────────────────────┴───────────┴─────────────────────┘
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**List only confirmed senders:**
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
$ cakemail senders list --filter "confirmed==true"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Output:**
|
|
72
|
+
```
|
|
73
|
+
┌────────┬────────────────────┬─────────────────────┬───────────┐
|
|
74
|
+
│ ID │ Name │ Email │ Confirmed │
|
|
75
|
+
├────────┼────────────────────┼─────────────────────┼───────────┤
|
|
76
|
+
│ 101 │ Newsletter Team │ news@example.com │ ✓ │
|
|
77
|
+
│ 102 │ Support │ support@example.com │ ✓ │
|
|
78
|
+
└────────┴────────────────────┴─────────────────────┴───────────┘
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Sort by name:**
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
$ cakemail senders list --sort "+name"
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Sort by most recently created:**
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
$ cakemail senders list --sort "-created_at"
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Export senders as JSON:**
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
$ cakemail senders list -f json > senders.json
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**Output:**
|
|
100
|
+
```json
|
|
101
|
+
{
|
|
102
|
+
"data": [
|
|
103
|
+
{
|
|
104
|
+
"id": 101,
|
|
105
|
+
"name": "Newsletter Team",
|
|
106
|
+
"email": "news@example.com",
|
|
107
|
+
"confirmed": true,
|
|
108
|
+
"created_at": "2024-01-15T10:30:00Z"
|
|
109
|
+
}
|
|
110
|
+
],
|
|
111
|
+
"count": 3
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**Find unconfirmed senders:**
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
$ cakemail senders list -f json | jq '.data[] | select(.confirmed == false)'
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Notes
|
|
122
|
+
|
|
123
|
+
- Only confirmed senders can be used for campaigns and emails
|
|
124
|
+
- Unconfirmed senders show ✗ in the Confirmed column
|
|
125
|
+
- Use filtering to quickly find confirmed/unconfirmed senders
|
|
126
|
+
- Sort options: `+name`, `-name`, `+email`, `-email`, `+confirmed`, `-confirmed`, `+created_at`, `-created_at`
|
|
127
|
+
|
|
128
|
+
### Related Commands
|
|
129
|
+
|
|
130
|
+
- [senders create](#senders-create) - Add new sender
|
|
131
|
+
- [senders confirm](#senders-confirm) - Verify sender email
|
|
132
|
+
- [campaigns create](/en/cli/command-reference/campaigns#campaigns-create) - Use sender in campaign
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## senders get
|
|
137
|
+
|
|
138
|
+
Get detailed information about a specific sender.
|
|
139
|
+
|
|
140
|
+
### Usage
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
cakemail senders get <id>
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Arguments
|
|
147
|
+
|
|
148
|
+
- `id` - Sender ID (required)
|
|
149
|
+
|
|
150
|
+
### Examples
|
|
151
|
+
|
|
152
|
+
**Get sender details:**
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
$ cakemail senders get 101
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
**Output:**
|
|
159
|
+
```
|
|
160
|
+
{
|
|
161
|
+
"id": 101,
|
|
162
|
+
"name": "Newsletter Team",
|
|
163
|
+
"email": "news@example.com",
|
|
164
|
+
"confirmed": true,
|
|
165
|
+
"confirmed_at": "2024-01-15T10:45:00Z",
|
|
166
|
+
"created_at": "2024-01-15T10:30:00Z",
|
|
167
|
+
"updated_at": "2024-01-15T10:30:00Z"
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**Check if sender is confirmed:**
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
$ cakemail senders get 101 -f json | jq '.confirmed'
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
**Output:**
|
|
178
|
+
```
|
|
179
|
+
true
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
**Get sender email:**
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
$ cakemail senders get 101 -f json | jq -r '.email'
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
**Output:**
|
|
189
|
+
```
|
|
190
|
+
news@example.com
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Notes
|
|
194
|
+
|
|
195
|
+
- Shows confirmation status and timestamp
|
|
196
|
+
- Confirmed senders can be used immediately
|
|
197
|
+
- Unconfirmed senders require email verification
|
|
198
|
+
|
|
199
|
+
### Related Commands
|
|
200
|
+
|
|
201
|
+
- [senders list](#senders-list) - Find sender IDs
|
|
202
|
+
- [senders update](#senders-update) - Modify sender details
|
|
203
|
+
- [senders confirm](#senders-confirm) - Verify sender
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## senders create
|
|
208
|
+
|
|
209
|
+
Create a new sender identity and send verification email.
|
|
210
|
+
|
|
211
|
+
### Usage
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
cakemail senders create [options]
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### Options
|
|
218
|
+
|
|
219
|
+
- `-n, --name <name>` - Sender name (required)
|
|
220
|
+
- `-e, --email <email>` - Sender email address (required)
|
|
221
|
+
|
|
222
|
+
### Examples
|
|
223
|
+
|
|
224
|
+
**Create sender:**
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
$ cakemail senders create -n "Newsletter Team" -e "news@example.com"
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**Output:**
|
|
231
|
+
```
|
|
232
|
+
✓ Sender created: 101
|
|
233
|
+
ℹ A confirmation email has been sent to verify this sender
|
|
234
|
+
{
|
|
235
|
+
"id": 101,
|
|
236
|
+
"name": "Newsletter Team",
|
|
237
|
+
"email": "news@example.com",
|
|
238
|
+
"confirmed": false,
|
|
239
|
+
"created_at": "2024-03-15T10:30:00Z"
|
|
240
|
+
}
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
**Create support sender:**
|
|
244
|
+
|
|
245
|
+
```bash
|
|
246
|
+
$ cakemail senders create -n "Customer Support" -e "support@example.com"
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
**Output:**
|
|
250
|
+
```
|
|
251
|
+
✓ Sender created: 102
|
|
252
|
+
ℹ A confirmation email has been sent to verify this sender
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**Create marketing sender:**
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
$ cakemail senders create -n "Marketing Team" -e "marketing@example.com"
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### Verification Process
|
|
262
|
+
|
|
263
|
+
1. Sender created with `confirmed: false` status
|
|
264
|
+
2. Verification email sent to the sender address
|
|
265
|
+
3. Email contains confirmation link with confirmation ID
|
|
266
|
+
4. Click link or use [senders confirm](#senders-confirm) command
|
|
267
|
+
5. Sender status changes to `confirmed: true`
|
|
268
|
+
|
|
269
|
+
### Notes
|
|
270
|
+
|
|
271
|
+
- Verification email sent automatically after creation
|
|
272
|
+
- Sender cannot be used until confirmed
|
|
273
|
+
- Must have access to the email address to verify
|
|
274
|
+
- Email validation performed before creation
|
|
275
|
+
- Verification link expires after 24 hours
|
|
276
|
+
- Use [senders resend-confirmation](#senders-resend-confirmation) if email not received
|
|
277
|
+
|
|
278
|
+
### Related Commands
|
|
279
|
+
|
|
280
|
+
- [senders confirm](#senders-confirm) - Complete verification
|
|
281
|
+
- [senders resend-confirmation](#senders-resend-confirmation) - Resend verification email
|
|
282
|
+
- [senders list](#senders-list) - View all senders
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
## senders update
|
|
287
|
+
|
|
288
|
+
Update an existing sender's name or email address.
|
|
289
|
+
|
|
290
|
+
### Usage
|
|
291
|
+
|
|
292
|
+
```bash
|
|
293
|
+
cakemail senders update <id> [options]
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
### Arguments
|
|
297
|
+
|
|
298
|
+
- `id` - Sender ID (required)
|
|
299
|
+
|
|
300
|
+
### Options
|
|
301
|
+
|
|
302
|
+
- `-n, --name <name>` - New sender name
|
|
303
|
+
- `-e, --email <email>` - New sender email address
|
|
304
|
+
|
|
305
|
+
### Examples
|
|
306
|
+
|
|
307
|
+
**Update sender name:**
|
|
308
|
+
|
|
309
|
+
```bash
|
|
310
|
+
$ cakemail senders update 101 -n "Newsletter Team - US"
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
**Output:**
|
|
314
|
+
```
|
|
315
|
+
✓ Sender 101 updated
|
|
316
|
+
{
|
|
317
|
+
"id": 101,
|
|
318
|
+
"name": "Newsletter Team - US",
|
|
319
|
+
"email": "news@example.com",
|
|
320
|
+
"confirmed": true
|
|
321
|
+
}
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
**Update sender email:**
|
|
325
|
+
|
|
326
|
+
```bash
|
|
327
|
+
$ cakemail senders update 101 -e "newsletter@example.com"
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
**Output:**
|
|
331
|
+
```
|
|
332
|
+
✓ Sender 101 updated
|
|
333
|
+
{
|
|
334
|
+
"id": 101,
|
|
335
|
+
"name": "Newsletter Team - US",
|
|
336
|
+
"email": "newsletter@example.com",
|
|
337
|
+
"confirmed": false
|
|
338
|
+
}
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
**Update both name and email:**
|
|
342
|
+
|
|
343
|
+
```bash
|
|
344
|
+
$ cakemail senders update 101 -n "Marketing Newsletter" -e "marketing@example.com"
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
### Notes
|
|
348
|
+
|
|
349
|
+
- Only provided fields are updated (partial updates)
|
|
350
|
+
- Changing email resets `confirmed` status to `false`
|
|
351
|
+
- New verification email sent when email is changed
|
|
352
|
+
- Must re-verify email address after change
|
|
353
|
+
- Sender ID remains the same
|
|
354
|
+
|
|
355
|
+
### Related Commands
|
|
356
|
+
|
|
357
|
+
- [senders get](#senders-get) - View current sender details
|
|
358
|
+
- [senders confirm](#senders-confirm) - Verify new email
|
|
359
|
+
- [senders create](#senders-create) - Create new sender
|
|
360
|
+
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
## senders delete
|
|
364
|
+
|
|
365
|
+
Permanently delete a sender identity.
|
|
366
|
+
|
|
367
|
+
### Usage
|
|
368
|
+
|
|
369
|
+
```bash
|
|
370
|
+
cakemail senders delete <id> [options]
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
### Arguments
|
|
374
|
+
|
|
375
|
+
- `id` - Sender ID (required)
|
|
376
|
+
|
|
377
|
+
### Options
|
|
378
|
+
|
|
379
|
+
- `-f, --force` - Skip confirmation prompt (use in scripts)
|
|
380
|
+
|
|
381
|
+
### Examples
|
|
382
|
+
|
|
383
|
+
**Delete sender with confirmation:**
|
|
384
|
+
|
|
385
|
+
```bash
|
|
386
|
+
$ cakemail senders delete 103
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
**Output:**
|
|
390
|
+
```
|
|
391
|
+
⚠ Delete sender 103?
|
|
392
|
+
|
|
393
|
+
The following will happen:
|
|
394
|
+
• Sender will be permanently deleted
|
|
395
|
+
|
|
396
|
+
Type 'yes' to confirm: yes
|
|
397
|
+
|
|
398
|
+
✓ Sender 103 deleted
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
**Force delete without confirmation:**
|
|
402
|
+
|
|
403
|
+
```bash
|
|
404
|
+
$ cakemail senders delete 103 --force
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
**Output:**
|
|
408
|
+
```
|
|
409
|
+
✓ Sender 103 deleted
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
**Delete in script:**
|
|
413
|
+
|
|
414
|
+
```bash
|
|
415
|
+
$ cakemail senders delete 103 --force --batch
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### Notes
|
|
419
|
+
|
|
420
|
+
- Deletion is permanent and cannot be undone
|
|
421
|
+
- Cannot delete sender if used in active campaigns
|
|
422
|
+
- Historical campaigns keep sender information
|
|
423
|
+
- Sender email can be re-added later as new sender
|
|
424
|
+
- Confirmation required unless `--force` is used
|
|
425
|
+
|
|
426
|
+
### Related Commands
|
|
427
|
+
|
|
428
|
+
- [senders list](#senders-list) - View senders before deletion
|
|
429
|
+
- [senders get](#senders-get) - Check sender details
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
|
|
433
|
+
## senders confirm
|
|
434
|
+
|
|
435
|
+
Confirm a sender email address using the confirmation ID from verification email.
|
|
436
|
+
|
|
437
|
+
### Usage
|
|
438
|
+
|
|
439
|
+
```bash
|
|
440
|
+
cakemail senders confirm <confirmation-id>
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
### Arguments
|
|
444
|
+
|
|
445
|
+
- `confirmation-id` - Confirmation ID from verification email (required)
|
|
446
|
+
|
|
447
|
+
### Examples
|
|
448
|
+
|
|
449
|
+
**Confirm sender:**
|
|
450
|
+
|
|
451
|
+
```bash
|
|
452
|
+
$ cakemail senders confirm abc123def456ghi789
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
**Output:**
|
|
456
|
+
```
|
|
457
|
+
✓ Sender confirmed
|
|
458
|
+
{
|
|
459
|
+
"id": 101,
|
|
460
|
+
"name": "Newsletter Team",
|
|
461
|
+
"email": "news@example.com",
|
|
462
|
+
"confirmed": true,
|
|
463
|
+
"confirmed_at": "2024-03-15T10:45:00Z"
|
|
464
|
+
}
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
**Verify confirmation:**
|
|
468
|
+
|
|
469
|
+
```bash
|
|
470
|
+
$ cakemail senders get 101 -f json | jq '.confirmed'
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
**Output:**
|
|
474
|
+
```
|
|
475
|
+
true
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
### Finding Confirmation ID
|
|
479
|
+
|
|
480
|
+
The confirmation ID is found in the verification email:
|
|
481
|
+
|
|
482
|
+
1. Check inbox for email from Cakemail
|
|
483
|
+
2. Subject: "Verify your sender email address"
|
|
484
|
+
3. Click verification link OR extract ID from URL
|
|
485
|
+
4. URL format: `https://app.cakemail.com/verify?id=abc123def456ghi789`
|
|
486
|
+
5. Use the ID parameter value in this command
|
|
487
|
+
|
|
488
|
+
### Notes
|
|
489
|
+
|
|
490
|
+
- Confirmation ID provided in verification email
|
|
491
|
+
- Single-use only (cannot be reused)
|
|
492
|
+
- Expires after 24 hours
|
|
493
|
+
- Sets sender status to `confirmed: true`
|
|
494
|
+
- Sender can be used immediately after confirmation
|
|
495
|
+
- Use [senders resend-confirmation](#senders-resend-confirmation) if expired
|
|
496
|
+
|
|
497
|
+
### Related Commands
|
|
498
|
+
|
|
499
|
+
- [senders resend-confirmation](#senders-resend-confirmation) - Get new confirmation email
|
|
500
|
+
- [senders get](#senders-get) - Check confirmation status
|
|
501
|
+
- [senders create](#senders-create) - Create sender
|
|
502
|
+
|
|
503
|
+
---
|
|
504
|
+
|
|
505
|
+
## senders resend-confirmation
|
|
506
|
+
|
|
507
|
+
Resend the verification email for an unconfirmed sender.
|
|
508
|
+
|
|
509
|
+
### Usage
|
|
510
|
+
|
|
511
|
+
```bash
|
|
512
|
+
cakemail senders resend-confirmation <id>
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
### Arguments
|
|
516
|
+
|
|
517
|
+
- `id` - Sender ID (required)
|
|
518
|
+
|
|
519
|
+
### Examples
|
|
520
|
+
|
|
521
|
+
**Resend confirmation email:**
|
|
522
|
+
|
|
523
|
+
```bash
|
|
524
|
+
$ cakemail senders resend-confirmation 103
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
**Output:**
|
|
528
|
+
```
|
|
529
|
+
✓ Confirmation email resent for sender 103
|
|
530
|
+
```
|
|
531
|
+
|
|
532
|
+
**Check sender status before resending:**
|
|
533
|
+
|
|
534
|
+
```bash
|
|
535
|
+
$ cakemail senders get 103
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
**Output:**
|
|
539
|
+
```
|
|
540
|
+
{
|
|
541
|
+
"id": 103,
|
|
542
|
+
"name": "Marketing",
|
|
543
|
+
"email": "promo@example.com",
|
|
544
|
+
"confirmed": false
|
|
545
|
+
}
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
**Resend and then confirm:**
|
|
549
|
+
|
|
550
|
+
```bash
|
|
551
|
+
# Resend verification
|
|
552
|
+
$ cakemail senders resend-confirmation 103
|
|
553
|
+
|
|
554
|
+
# Check email for new confirmation ID
|
|
555
|
+
# Confirm using ID from email
|
|
556
|
+
$ cakemail senders confirm xyz789abc123def456
|
|
557
|
+
```
|
|
558
|
+
|
|
559
|
+
### Use Cases
|
|
560
|
+
|
|
561
|
+
1. **Original email not received** - Check spam folder first
|
|
562
|
+
2. **Confirmation link expired** - Links expire after 24 hours
|
|
563
|
+
3. **Email deleted accidentally**
|
|
564
|
+
4. **Wrong email address** - Update email first, then resend
|
|
565
|
+
|
|
566
|
+
### Notes
|
|
567
|
+
|
|
568
|
+
- Only works for unconfirmed senders
|
|
569
|
+
- Generates new confirmation ID (old one invalidated)
|
|
570
|
+
- Check spam/junk folders before resending
|
|
571
|
+
- Ensure sender email is correct before resending
|
|
572
|
+
- No rate limit on resend attempts
|
|
573
|
+
|
|
574
|
+
### Related Commands
|
|
575
|
+
|
|
576
|
+
- [senders confirm](#senders-confirm) - Use confirmation ID
|
|
577
|
+
- [senders get](#senders-get) - Check if confirmed
|
|
578
|
+
- [senders update](#senders-update) - Fix incorrect email
|
|
579
|
+
|
|
580
|
+
---
|
|
581
|
+
|
|
582
|
+
## Common Workflows
|
|
583
|
+
|
|
584
|
+
### Workflow 1: Add and Verify New Sender
|
|
585
|
+
|
|
586
|
+
```bash
|
|
587
|
+
# Create sender
|
|
588
|
+
$ cakemail senders create -n "Newsletter" -e "news@example.com"
|
|
589
|
+
|
|
590
|
+
# Note sender ID from output (e.g., 101)
|
|
591
|
+
|
|
592
|
+
# Check email inbox for verification email
|
|
593
|
+
# Copy confirmation ID from email
|
|
594
|
+
|
|
595
|
+
# Confirm sender
|
|
596
|
+
$ cakemail senders confirm abc123def456ghi789
|
|
597
|
+
|
|
598
|
+
# Verify confirmation
|
|
599
|
+
$ cakemail senders get 101 -f json | jq '.confirmed'
|
|
600
|
+
```
|
|
601
|
+
|
|
602
|
+
### Workflow 2: Handle Missing Verification Email
|
|
603
|
+
|
|
604
|
+
```bash
|
|
605
|
+
# Check sender status
|
|
606
|
+
$ cakemail senders get 103
|
|
607
|
+
|
|
608
|
+
# If not confirmed, resend verification
|
|
609
|
+
$ cakemail senders resend-confirmation 103
|
|
610
|
+
|
|
611
|
+
# Check spam/junk folder
|
|
612
|
+
# Wait a few minutes for email delivery
|
|
613
|
+
|
|
614
|
+
# Confirm with new ID
|
|
615
|
+
$ cakemail senders confirm newid123abc456def
|
|
616
|
+
```
|
|
617
|
+
|
|
618
|
+
### Workflow 3: Update Sender Email
|
|
619
|
+
|
|
620
|
+
```bash
|
|
621
|
+
# View current sender
|
|
622
|
+
$ cakemail senders get 101
|
|
623
|
+
|
|
624
|
+
# Update email address
|
|
625
|
+
$ cakemail senders update 101 -e "newemail@example.com"
|
|
626
|
+
|
|
627
|
+
# Note: sender is now unconfirmed
|
|
628
|
+
# Check new email for verification
|
|
629
|
+
|
|
630
|
+
# Confirm new email
|
|
631
|
+
$ cakemail senders confirm newemail789xyz123
|
|
632
|
+
|
|
633
|
+
# Verify update
|
|
634
|
+
$ cakemail senders get 101
|
|
635
|
+
```
|
|
636
|
+
|
|
637
|
+
### Workflow 4: Audit Sender List
|
|
638
|
+
|
|
639
|
+
```bash
|
|
640
|
+
# List all senders
|
|
641
|
+
$ cakemail senders list
|
|
642
|
+
|
|
643
|
+
# Find unconfirmed senders
|
|
644
|
+
$ cakemail senders list -f json | jq '.data[] | select(.confirmed == false)'
|
|
645
|
+
|
|
646
|
+
# Resend verifications for unconfirmed
|
|
647
|
+
$ cakemail senders resend-confirmation 103
|
|
648
|
+
$ cakemail senders resend-confirmation 104
|
|
649
|
+
|
|
650
|
+
# Delete unused senders
|
|
651
|
+
$ cakemail senders delete 105 --force
|
|
652
|
+
```
|
|
653
|
+
|
|
654
|
+
### Workflow 5: Setup Multiple Senders
|
|
655
|
+
|
|
656
|
+
```bash
|
|
657
|
+
# Create senders for different purposes
|
|
658
|
+
$ cakemail senders create -n "Newsletter" -e "news@example.com"
|
|
659
|
+
$ cakemail senders create -n "Transactional" -e "noreply@example.com"
|
|
660
|
+
$ cakemail senders create -n "Support" -e "support@example.com"
|
|
661
|
+
|
|
662
|
+
# Confirm each sender (check emails)
|
|
663
|
+
$ cakemail senders confirm id1
|
|
664
|
+
$ cakemail senders confirm id2
|
|
665
|
+
$ cakemail senders confirm id3
|
|
666
|
+
|
|
667
|
+
# List confirmed senders
|
|
668
|
+
$ cakemail senders list --filter "confirmed==true"
|
|
669
|
+
```
|
|
670
|
+
|
|
671
|
+
## Best Practices
|
|
672
|
+
|
|
673
|
+
1. **Use Descriptive Names**: Make sender names clear and purposeful
|
|
674
|
+
2. **Verify Promptly**: Confirm senders immediately after creation
|
|
675
|
+
3. **Domain Ownership**: Only use email addresses you control
|
|
676
|
+
4. **Multiple Senders**: Create separate senders for different email types
|
|
677
|
+
5. **Regular Audits**: Periodically review and clean up unused senders
|
|
678
|
+
6. **Professional Emails**: Use business/brand email addresses
|
|
679
|
+
7. **Check Spam**: Always check spam folder if verification not received
|
|
680
|
+
8. **Delete Unused**: Remove senders no longer in use
|
|
681
|
+
|
|
682
|
+
## Troubleshooting
|
|
683
|
+
|
|
684
|
+
### Error: "Email address is invalid"
|
|
685
|
+
|
|
686
|
+
Email format validation failed.
|
|
687
|
+
|
|
688
|
+
**Solution:**
|
|
689
|
+
```bash
|
|
690
|
+
# Use valid email format
|
|
691
|
+
$ cakemail senders create -n "Newsletter" -e "news@example.com"
|
|
692
|
+
|
|
693
|
+
# Not valid: "news@example" (missing TLD)
|
|
694
|
+
# Not valid: "news.example.com" (missing @)
|
|
695
|
+
```
|
|
696
|
+
|
|
697
|
+
### Verification Email Not Received
|
|
698
|
+
|
|
699
|
+
Email delivery may be delayed or blocked.
|
|
700
|
+
|
|
701
|
+
**Solution:**
|
|
702
|
+
```bash
|
|
703
|
+
# Check spam/junk folder first
|
|
704
|
+
|
|
705
|
+
# Wait 5-10 minutes for delivery
|
|
706
|
+
|
|
707
|
+
# Resend if not received
|
|
708
|
+
$ cakemail senders resend-confirmation 101
|
|
709
|
+
|
|
710
|
+
# Verify email address is correct
|
|
711
|
+
$ cakemail senders get 101 -f json | jq '.email'
|
|
712
|
+
|
|
713
|
+
# Update if wrong
|
|
714
|
+
$ cakemail senders update 101 -e "correct@example.com"
|
|
715
|
+
```
|
|
716
|
+
|
|
717
|
+
### Error: "Confirmation ID is invalid or expired"
|
|
718
|
+
|
|
719
|
+
Confirmation link expired (24 hours) or already used.
|
|
720
|
+
|
|
721
|
+
**Solution:**
|
|
722
|
+
```bash
|
|
723
|
+
# Resend verification email
|
|
724
|
+
$ cakemail senders resend-confirmation 101
|
|
725
|
+
|
|
726
|
+
# Use new confirmation ID from email
|
|
727
|
+
$ cakemail senders confirm newid123
|
|
728
|
+
```
|
|
729
|
+
|
|
730
|
+
### Cannot Delete Sender
|
|
731
|
+
|
|
732
|
+
Sender may be in use by active campaigns.
|
|
733
|
+
|
|
734
|
+
**Solution:**
|
|
735
|
+
```bash
|
|
736
|
+
# Check which campaigns use this sender
|
|
737
|
+
$ cakemail campaigns list -f json | jq '.data[] | select(.sender_id == 101)'
|
|
738
|
+
|
|
739
|
+
# Wait for campaigns to complete
|
|
740
|
+
# Or use different sender for campaigns
|
|
741
|
+
|
|
742
|
+
# Then delete
|
|
743
|
+
$ cakemail senders delete 101 --force
|
|
744
|
+
```
|
|
745
|
+
|
|
746
|
+
### Sender Shows as Unconfirmed After Update
|
|
747
|
+
|
|
748
|
+
Changing email resets confirmation status.
|
|
749
|
+
|
|
750
|
+
**Solution:**
|
|
751
|
+
```bash
|
|
752
|
+
# This is expected behavior
|
|
753
|
+
# Check email for new verification
|
|
754
|
+
|
|
755
|
+
# Confirm new email address
|
|
756
|
+
$ cakemail senders confirm newemail123
|
|
757
|
+
|
|
758
|
+
# Verify confirmation
|
|
759
|
+
$ cakemail senders get 101 -f json | jq '.confirmed'
|
|
760
|
+
```
|
|
761
|
+
|
|
762
|
+
### Cannot Use Sender in Campaign
|
|
763
|
+
|
|
764
|
+
Sender must be confirmed first.
|
|
765
|
+
|
|
766
|
+
**Solution:**
|
|
767
|
+
```bash
|
|
768
|
+
# Check sender status
|
|
769
|
+
$ cakemail senders get 101 -f json | jq '.confirmed'
|
|
770
|
+
|
|
771
|
+
# If false, resend and confirm
|
|
772
|
+
$ cakemail senders resend-confirmation 101
|
|
773
|
+
$ cakemail senders confirm id123
|
|
774
|
+
|
|
775
|
+
# Then use in campaign
|
|
776
|
+
$ cakemail campaigns create -n "Test" -l 123 -s 101
|
|
777
|
+
```
|
|
778
|
+
|
|
779
|
+
### Domain Authentication Issues
|
|
780
|
+
|
|
781
|
+
Sender domain may not be properly authenticated.
|
|
782
|
+
|
|
783
|
+
**Solution:**
|
|
784
|
+
```bash
|
|
785
|
+
# Ensure SPF record includes Cakemail
|
|
786
|
+
# SPF: v=spf1 include:spf.cakemail.com ~all
|
|
787
|
+
|
|
788
|
+
# Setup DKIM for your domain
|
|
789
|
+
# Contact Cakemail support for DKIM keys
|
|
790
|
+
|
|
791
|
+
# Verify DMARC policy
|
|
792
|
+
# DMARC: v=DMARC1; p=none; rua=mailto:admin@example.com
|
|
793
|
+
|
|
794
|
+
# Test with external tools
|
|
795
|
+
# Use: https://mxtoolbox.com/spf.aspx
|
|
796
|
+
```
|
|
797
|
+
|
|
798
|
+
---
|
|
799
|
+
|
|
800
|
+
**Related Documentation:**
|
|
801
|
+
- [Campaigns Commands](/en/cli/command-reference/campaigns/) - Use senders in campaigns
|
|
802
|
+
- [Emails Commands](/en/cli/command-reference/emails/) - Use senders in transactional emails
|
|
803
|
+
- [Account Commands](/en/cli/command-reference/account/) - Account settings and configuration
|