@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.
Files changed (198) hide show
  1. package/.claude/settings.local.json +12 -0
  2. package/.env.example +40 -0
  3. package/.env.test.example +45 -0
  4. package/CHANGELOG.md +1031 -0
  5. package/README.md +41 -37
  6. package/audit-formats.js +128 -0
  7. package/cakemail.rb +20 -0
  8. package/dist/client.js +1 -1
  9. package/dist/client.js.map +1 -1
  10. package/dist/commands/account.js +1 -1
  11. package/dist/commands/account.js.map +1 -1
  12. package/dist/commands/attributes.js +1 -1
  13. package/dist/commands/attributes.js.map +1 -1
  14. package/dist/commands/campaigns.js +1 -1
  15. package/dist/commands/campaigns.js.map +1 -1
  16. package/dist/commands/contacts.js +1 -1
  17. package/dist/commands/contacts.js.map +1 -1
  18. package/dist/commands/emails.js +1 -1
  19. package/dist/commands/emails.js.map +1 -1
  20. package/dist/commands/interests.js +1 -1
  21. package/dist/commands/interests.js.map +1 -1
  22. package/dist/commands/lists.js +1 -1
  23. package/dist/commands/lists.js.map +1 -1
  24. package/dist/commands/logs.js +1 -1
  25. package/dist/commands/logs.js.map +1 -1
  26. package/dist/commands/reports.js +1 -1
  27. package/dist/commands/reports.js.map +1 -1
  28. package/dist/commands/segments.js +1 -1
  29. package/dist/commands/segments.js.map +1 -1
  30. package/dist/commands/senders.js +1 -1
  31. package/dist/commands/senders.js.map +1 -1
  32. package/dist/commands/suppressed.js +1 -1
  33. package/dist/commands/suppressed.js.map +1 -1
  34. package/dist/commands/tags.js +1 -1
  35. package/dist/commands/tags.js.map +1 -1
  36. package/dist/commands/templates.js +1 -1
  37. package/dist/commands/templates.js.map +1 -1
  38. package/dist/commands/transactional-templates.js +1 -1
  39. package/dist/commands/transactional-templates.js.map +1 -1
  40. package/dist/commands/webhooks.js +1 -1
  41. package/dist/commands/webhooks.js.map +1 -1
  42. package/dist/utils/config.js +2 -2
  43. package/dist/utils/config.js.map +1 -1
  44. package/dist/utils/errors.js +1 -1
  45. package/dist/utils/errors.js.map +1 -1
  46. package/dist/utils/progress.d.ts.map +1 -1
  47. package/dist/utils/progress.js +32 -4
  48. package/dist/utils/progress.js.map +1 -1
  49. package/dist/utils/spinner.d.ts +17 -0
  50. package/dist/utils/spinner.d.ts.map +1 -0
  51. package/dist/utils/spinner.js +43 -0
  52. package/dist/utils/spinner.js.map +1 -0
  53. package/docs/DOCUMENTATION-STANDARD.md +1068 -0
  54. package/docs/README.md +161 -0
  55. package/docs/developer/ARCHITECTURE.md +516 -0
  56. package/docs/developer/AUTH.md +204 -0
  57. package/docs/developer/CONTRIBUTING.md +227 -0
  58. package/docs/developer/DOCUMENTATION_SUMMARY.md +346 -0
  59. package/docs/developer/PROJECT_INDEX.md +365 -0
  60. package/docs/planning/API_COVERAGE.md +1045 -0
  61. package/docs/planning/BACKLOG.md +1159 -0
  62. package/docs/planning/PROFILE_SYSTEM_TASKS.md +287 -0
  63. package/docs/planning/UX_IMPLEMENTATION_PLAN.md +691 -0
  64. package/docs/planning/archive/RELEASE_CHECKLIST_v1.3.0.md +332 -0
  65. package/docs/planning/archive/RELEASE_v1.3.0.md +428 -0
  66. package/docs/planning/archive/cakemail-cli-ux-improvements.md +438 -0
  67. package/docs/planning/cakemail-profile-system-plan.md +1121 -0
  68. package/docs/testing/AI_USER_SIMULATION_DESIGN.md +1342 -0
  69. package/docs/testing/KENOGAMI_BIDIRECTIONAL_FLOW.md +1517 -0
  70. package/docs/testing/KENOGAMI_TRUTH_RECONCILIATION_SYSTEM.md +1369 -0
  71. package/docs/user-manual/.obsidian/app.json +1 -0
  72. package/docs/user-manual/.obsidian/appearance.json +1 -0
  73. package/docs/user-manual/.obsidian/core-plugins.json +33 -0
  74. package/docs/user-manual/.obsidian/workspace.json +167 -0
  75. package/docs/user-manual/01-getting-started/01-installation.md +214 -0
  76. package/docs/user-manual/01-getting-started/02-quick-start.md +432 -0
  77. package/docs/user-manual/01-getting-started/03-authentication.md +448 -0
  78. package/docs/user-manual/01-getting-started/04-configuration.md +430 -0
  79. package/docs/user-manual/01-getting-started/05-output-formats.md +447 -0
  80. package/docs/user-manual/02-core-concepts/01-accounts.md +514 -0
  81. package/docs/user-manual/02-core-concepts/02-profile-system.md +771 -0
  82. package/docs/user-manual/02-core-concepts/03-smart-defaults.md +485 -0
  83. package/docs/user-manual/02-core-concepts/04-authentication-methods.md +435 -0
  84. package/docs/user-manual/02-core-concepts/05-pagination-filtering.md +600 -0
  85. package/docs/user-manual/02-core-concepts/06-error-handling.md +718 -0
  86. package/docs/user-manual/02-core-concepts/07-api-coverage.md +483 -0
  87. package/docs/user-manual/03-email-operations/01-senders.md +490 -0
  88. package/docs/user-manual/03-email-operations/02-templates.md +444 -0
  89. package/docs/user-manual/03-email-operations/03-transactional-emails.md +706 -0
  90. package/docs/user-manual/03-email-operations/04-email-tracking.md +407 -0
  91. package/docs/user-manual/04-campaign-management/01-campaigns-basics.md +394 -0
  92. package/docs/user-manual/04-campaign-management/02-campaign-scheduling.md +630 -0
  93. package/docs/user-manual/04-campaign-management/03-campaign-testing.md +997 -0
  94. package/docs/user-manual/04-campaign-management/04-campaign-lifecycle.md +709 -0
  95. package/docs/user-manual/04-campaign-management/05-campaign-links.md +934 -0
  96. package/docs/user-manual/05-contact-management/01-lists.md +836 -0
  97. package/docs/user-manual/05-contact-management/02-contacts.md +1035 -0
  98. package/docs/user-manual/05-contact-management/03-custom-attributes.md +788 -0
  99. package/docs/user-manual/05-contact-management/04-segments.md +1028 -0
  100. package/docs/user-manual/05-contact-management/05-contact-import-export.md +1031 -0
  101. package/docs/user-manual/06-analytics-reporting/01-campaign-analytics.md +867 -0
  102. package/docs/user-manual/06-analytics-reporting/02-account-reports.md +227 -0
  103. package/docs/user-manual/07-integrations/01-webhooks-integration.md +259 -0
  104. package/docs/user-manual/07-integrations/02-automation.md +326 -0
  105. package/docs/user-manual/08-advanced-usage/01-scripting-patterns.md +672 -0
  106. package/docs/user-manual/08-advanced-usage/02-bulk-operations.md +932 -0
  107. package/docs/user-manual/08-advanced-usage/03-ci-cd-integration.md +892 -0
  108. package/docs/user-manual/08-advanced-usage/04-performance-optimization.md +766 -0
  109. package/docs/user-manual/09-command-reference/01-config.md +776 -0
  110. package/docs/user-manual/09-command-reference/02-account.md +652 -0
  111. package/docs/user-manual/09-command-reference/03-lists.md +958 -0
  112. package/docs/user-manual/09-command-reference/04-contacts.md +1408 -0
  113. package/docs/user-manual/09-command-reference/05-attributes.md +617 -0
  114. package/docs/user-manual/09-command-reference/06-segments.md +894 -0
  115. package/docs/user-manual/09-command-reference/07-senders.md +803 -0
  116. package/docs/user-manual/09-command-reference/08-templates.md +818 -0
  117. package/docs/user-manual/09-command-reference/09-campaigns.md +1250 -0
  118. package/docs/user-manual/09-command-reference/10-emails.md +807 -0
  119. package/docs/user-manual/09-command-reference/11-reports.md +1135 -0
  120. package/docs/user-manual/09-command-reference/12-webhooks.md +773 -0
  121. package/docs/user-manual/09-command-reference/13-suppressed.md +797 -0
  122. package/docs/user-manual/09-command-reference/14-interests.md +630 -0
  123. package/docs/user-manual/09-command-reference/15-tags.md +584 -0
  124. package/docs/user-manual/09-command-reference/16-logs.md +656 -0
  125. package/docs/user-manual/09-command-reference/17-transactional-templates.md +850 -0
  126. package/docs/user-manual/10-troubleshooting/01-common-errors.md +457 -0
  127. package/docs/user-manual/10-troubleshooting/02-authentication-issues.md +558 -0
  128. package/docs/user-manual/10-troubleshooting/03-connection-problems.md +634 -0
  129. package/docs/user-manual/10-troubleshooting/04-debugging.md +725 -0
  130. package/docs/user-manual/11-appendix/04-faq.md +484 -0
  131. package/docs/user-manual/11-appendix/05-glossary.md +250 -0
  132. package/docs/user-manual/README.md +0 -0
  133. package/package.json +13 -61
  134. package/src/cli.ts +125 -0
  135. package/src/client.ts +16 -0
  136. package/src/commands/account.ts +267 -0
  137. package/src/commands/accounts.ts +78 -0
  138. package/src/commands/actions.ts +249 -0
  139. package/src/commands/attributes.ts +139 -0
  140. package/src/commands/campaign-blueprints.ts +106 -0
  141. package/src/commands/campaigns.ts +469 -0
  142. package/src/commands/config.ts +77 -0
  143. package/src/commands/contacts.ts +612 -0
  144. package/src/commands/custom-attributes.ts +127 -0
  145. package/src/commands/dkims.ts +117 -0
  146. package/src/commands/domains.ts +82 -0
  147. package/src/commands/email-apis.ts +569 -0
  148. package/src/commands/emails.ts +197 -0
  149. package/src/commands/forms.ts +283 -0
  150. package/src/commands/interests.ts +155 -0
  151. package/src/commands/links.ts +38 -0
  152. package/src/commands/lists.ts +406 -0
  153. package/src/commands/logos.ts +71 -0
  154. package/src/commands/logs.ts +386 -0
  155. package/src/commands/reports.ts +306 -0
  156. package/src/commands/segments.ts +158 -0
  157. package/src/commands/senders.ts +204 -0
  158. package/src/commands/sub-accounts.ts +271 -0
  159. package/src/commands/suppressed-emails.ts +234 -0
  160. package/src/commands/suppressed.ts +198 -0
  161. package/src/commands/system-emails.ts +85 -0
  162. package/src/commands/tags.ts +146 -0
  163. package/src/commands/tasks.ts +116 -0
  164. package/src/commands/templates.ts +189 -0
  165. package/src/commands/tokens.ts +83 -0
  166. package/src/commands/transactional-emails.ts +374 -0
  167. package/src/commands/transactional-templates.ts +385 -0
  168. package/src/commands/users.ts +506 -0
  169. package/src/commands/webhooks.ts +172 -0
  170. package/src/commands/workflow-blueprints.ts +123 -0
  171. package/src/commands/workflows.ts +265 -0
  172. package/src/types/profile.ts +93 -0
  173. package/src/utils/auth.ts +272 -0
  174. package/src/utils/config-file.ts +96 -0
  175. package/src/utils/config.ts +134 -0
  176. package/src/utils/confirm.ts +32 -0
  177. package/src/utils/defaults.ts +99 -0
  178. package/src/utils/errors.ts +116 -0
  179. package/src/utils/interactive.ts +91 -0
  180. package/src/utils/list-defaults.ts +74 -0
  181. package/src/utils/output.ts +190 -0
  182. package/src/utils/progress.ts +320 -0
  183. package/src/utils/spinner.ts +22 -0
  184. package/tests/IMPLEMENTATION_STATUS.md +258 -0
  185. package/tests/PTY_SETUP.md +118 -0
  186. package/tests/PTY_TESTING_GUIDE.md +507 -0
  187. package/tests/README.md +244 -0
  188. package/tests/fixtures/api-responses/campaigns.json +34 -0
  189. package/tests/fixtures/test-config.json +13 -0
  190. package/tests/helpers/cli-runner.ts +128 -0
  191. package/tests/helpers/mock-server.ts +301 -0
  192. package/tests/helpers/pty-runner.ts +181 -0
  193. package/tests/integration/campaigns-real-api.test.ts +196 -0
  194. package/tests/integration/setup-integration.ts +50 -0
  195. package/tests/pty/campaigns.test.ts +241 -0
  196. package/tests/setup.ts +34 -0
  197. package/tsconfig.json +15 -0
  198. 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