@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,457 @@
|
|
|
1
|
+
# Common Errors & Solutions
|
|
2
|
+
|
|
3
|
+
Troubleshoot common issues and error messages when using the Cakemail CLI.
|
|
4
|
+
|
|
5
|
+
## Authentication Errors
|
|
6
|
+
|
|
7
|
+
### Error: "No credentials found in .env file"
|
|
8
|
+
|
|
9
|
+
**Problem:** CLI cannot find authentication credentials.
|
|
10
|
+
|
|
11
|
+
**Solutions:**
|
|
12
|
+
```bash
|
|
13
|
+
# Initialize CLI
|
|
14
|
+
$ cakemail config init
|
|
15
|
+
|
|
16
|
+
# Or manually create .env file
|
|
17
|
+
$ cat > .env << EOF
|
|
18
|
+
CAKEMAIL_EMAIL=your@email.com
|
|
19
|
+
CAKEMAIL_PASSWORD=your_password
|
|
20
|
+
EOF
|
|
21
|
+
|
|
22
|
+
# Verify
|
|
23
|
+
$ cakemail account test
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Error: "Invalid credentials"
|
|
27
|
+
|
|
28
|
+
**Problem:** Email or password is incorrect.
|
|
29
|
+
|
|
30
|
+
**Solutions:**
|
|
31
|
+
```bash
|
|
32
|
+
# Re-initialize with correct credentials
|
|
33
|
+
$ cakemail config init
|
|
34
|
+
|
|
35
|
+
# Check credentials in .env
|
|
36
|
+
$ cat .env | grep CAKEMAIL
|
|
37
|
+
|
|
38
|
+
# Test authentication
|
|
39
|
+
$ cakemail account test
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Error: "Access token expired"
|
|
43
|
+
|
|
44
|
+
**Problem:** Stored access token is no longer valid.
|
|
45
|
+
|
|
46
|
+
**Solutions:**
|
|
47
|
+
```bash
|
|
48
|
+
# Remove expired token
|
|
49
|
+
$ sed -i '/CAKEMAIL_ACCESS_TOKEN/d' .env
|
|
50
|
+
|
|
51
|
+
# Re-authenticate
|
|
52
|
+
$ cakemail account show
|
|
53
|
+
# CLI will automatically get new token
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Resource Not Found Errors
|
|
57
|
+
|
|
58
|
+
### Error: "Campaign not found"
|
|
59
|
+
|
|
60
|
+
**Problem:** Campaign ID doesn't exist or was deleted.
|
|
61
|
+
|
|
62
|
+
**Solutions:**
|
|
63
|
+
```bash
|
|
64
|
+
# List available campaigns
|
|
65
|
+
$ cakemail campaigns list
|
|
66
|
+
|
|
67
|
+
# Check specific campaign
|
|
68
|
+
$ cakemail campaigns get CAMPAIGN_ID
|
|
69
|
+
|
|
70
|
+
# Verify ID is correct
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Error: "List not found"
|
|
74
|
+
|
|
75
|
+
**Problem:** Invalid list ID.
|
|
76
|
+
|
|
77
|
+
**Solutions:**
|
|
78
|
+
```bash
|
|
79
|
+
# List all lists
|
|
80
|
+
$ cakemail lists list
|
|
81
|
+
|
|
82
|
+
# Use correct list ID
|
|
83
|
+
$ cakemail lists get 123
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Error: "Contact not found"
|
|
87
|
+
|
|
88
|
+
**Problem:** Contact ID doesn't exist in specified list.
|
|
89
|
+
|
|
90
|
+
**Solutions:**
|
|
91
|
+
```bash
|
|
92
|
+
# Search by email
|
|
93
|
+
$ cakemail contacts list 123 --filter "email==user@example.com"
|
|
94
|
+
|
|
95
|
+
# Verify list and contact IDs match
|
|
96
|
+
$ cakemail contacts get 123 501
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Validation Errors
|
|
100
|
+
|
|
101
|
+
### Error: "Invalid email format"
|
|
102
|
+
|
|
103
|
+
**Problem:** Email address format is incorrect.
|
|
104
|
+
|
|
105
|
+
**Solutions:**
|
|
106
|
+
```bash
|
|
107
|
+
# Valid format
|
|
108
|
+
$ cakemail contacts add 123 -e "user@example.com"
|
|
109
|
+
|
|
110
|
+
# Invalid formats
|
|
111
|
+
user@example # Missing domain extension
|
|
112
|
+
user.example.com # Missing @
|
|
113
|
+
@example.com # Missing local part
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Error: "Required field missing"
|
|
117
|
+
|
|
118
|
+
**Problem:** Command is missing required parameter.
|
|
119
|
+
|
|
120
|
+
**Solutions:**
|
|
121
|
+
```bash
|
|
122
|
+
# Campaign creation requires name, list, sender
|
|
123
|
+
$ cakemail campaigns create \
|
|
124
|
+
-n "Campaign Name" \
|
|
125
|
+
-l 123 \
|
|
126
|
+
-s 101
|
|
127
|
+
|
|
128
|
+
# Check command help
|
|
129
|
+
$ cakemail campaigns create --help
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Error: "Invalid JSON format"
|
|
133
|
+
|
|
134
|
+
**Problem:** Malformed JSON in custom attributes or conditions.
|
|
135
|
+
|
|
136
|
+
**Solutions:**
|
|
137
|
+
```bash
|
|
138
|
+
# Validate JSON first
|
|
139
|
+
$ echo '{"plan":"premium"}' | jq .
|
|
140
|
+
|
|
141
|
+
# Correct format
|
|
142
|
+
$ cakemail contacts add 123 -e "user@example.com" \
|
|
143
|
+
-d '{"plan":"premium","signup_date":"2024-03-15"}'
|
|
144
|
+
|
|
145
|
+
# Common mistakes
|
|
146
|
+
-d '{plan:premium}' # Missing quotes
|
|
147
|
+
-d '{"plan":"premium"' # Missing closing brace
|
|
148
|
+
-d "{\"plan\":\"premium\"}" # Correct (escaped)
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Permission Errors
|
|
152
|
+
|
|
153
|
+
### Error: "Insufficient permissions"
|
|
154
|
+
|
|
155
|
+
**Problem:** Account doesn't have access to perform action.
|
|
156
|
+
|
|
157
|
+
**Solutions:**
|
|
158
|
+
```bash
|
|
159
|
+
# Check account type
|
|
160
|
+
$ cakemail account show
|
|
161
|
+
|
|
162
|
+
# Verify account has necessary permissions
|
|
163
|
+
# Contact Cakemail support if needed
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Error: "Cannot access list"
|
|
167
|
+
|
|
168
|
+
**Problem:** List belongs to different account or doesn't exist.
|
|
169
|
+
|
|
170
|
+
**Solutions:**
|
|
171
|
+
```bash
|
|
172
|
+
# Check which account you're using
|
|
173
|
+
$ cakemail account show
|
|
174
|
+
|
|
175
|
+
# List accessible lists
|
|
176
|
+
$ cakemail lists list
|
|
177
|
+
|
|
178
|
+
# Switch accounts if needed
|
|
179
|
+
$ cakemail account use 457
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Rate Limiting
|
|
183
|
+
|
|
184
|
+
### Error: "Rate limit exceeded"
|
|
185
|
+
|
|
186
|
+
**Problem:** Too many requests in short time period.
|
|
187
|
+
|
|
188
|
+
**Solutions:**
|
|
189
|
+
```bash
|
|
190
|
+
# Add delays between requests
|
|
191
|
+
for id in {1..100}; do
|
|
192
|
+
cakemail contacts add 123 -e "user${id}@example.com"
|
|
193
|
+
sleep 1 # Wait 1 second
|
|
194
|
+
done
|
|
195
|
+
|
|
196
|
+
# Use bulk operations instead
|
|
197
|
+
$ cakemail contacts import 123 --file contacts.csv
|
|
198
|
+
|
|
199
|
+
# Wait before retrying
|
|
200
|
+
$ sleep 60 && cakemail campaigns list
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## Network Errors
|
|
204
|
+
|
|
205
|
+
### Error: "Connection timeout"
|
|
206
|
+
|
|
207
|
+
**Problem:** Cannot connect to Cakemail API.
|
|
208
|
+
|
|
209
|
+
**Solutions:**
|
|
210
|
+
```bash
|
|
211
|
+
# Check internet connection
|
|
212
|
+
$ ping api.cakemail.com
|
|
213
|
+
|
|
214
|
+
# Check proxy settings if applicable
|
|
215
|
+
$ env | grep -i proxy
|
|
216
|
+
|
|
217
|
+
# Try again
|
|
218
|
+
$ cakemail campaigns list
|
|
219
|
+
|
|
220
|
+
# Check API status
|
|
221
|
+
# Visit status.cakemail.com
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### Error: "Network unreachable"
|
|
225
|
+
|
|
226
|
+
**Problem:** Network configuration issue.
|
|
227
|
+
|
|
228
|
+
**Solutions:**
|
|
229
|
+
```bash
|
|
230
|
+
# Test network connectivity
|
|
231
|
+
$ curl -I https://api.cakemail.com
|
|
232
|
+
|
|
233
|
+
# Check firewall rules
|
|
234
|
+
# Ensure outbound HTTPS (443) is allowed
|
|
235
|
+
|
|
236
|
+
# Try with different network
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
## File Operation Errors
|
|
240
|
+
|
|
241
|
+
### Error: "File not found"
|
|
242
|
+
|
|
243
|
+
**Problem:** Specified file doesn't exist.
|
|
244
|
+
|
|
245
|
+
**Solutions:**
|
|
246
|
+
```bash
|
|
247
|
+
# Check file exists
|
|
248
|
+
$ ls -la campaign.html
|
|
249
|
+
|
|
250
|
+
# Use absolute path
|
|
251
|
+
$ cakemail campaigns create -n "Test" \
|
|
252
|
+
--html-file /full/path/to/campaign.html
|
|
253
|
+
|
|
254
|
+
# Check current directory
|
|
255
|
+
$ pwd
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### Error: "Permission denied"
|
|
259
|
+
|
|
260
|
+
**Problem:** Cannot read/write file.
|
|
261
|
+
|
|
262
|
+
**Solutions:**
|
|
263
|
+
```bash
|
|
264
|
+
# Check file permissions
|
|
265
|
+
$ ls -la .env
|
|
266
|
+
|
|
267
|
+
# Fix permissions
|
|
268
|
+
$ chmod 600 .env
|
|
269
|
+
|
|
270
|
+
# Ensure file is readable
|
|
271
|
+
$ chmod 644 campaign.html
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### Error: "File too large"
|
|
275
|
+
|
|
276
|
+
**Problem:** File exceeds size limit.
|
|
277
|
+
|
|
278
|
+
**Solutions:**
|
|
279
|
+
```bash
|
|
280
|
+
# Check file size
|
|
281
|
+
$ ls -lh campaign.html
|
|
282
|
+
|
|
283
|
+
# Optimize HTML
|
|
284
|
+
# - Compress images
|
|
285
|
+
# - Minify HTML
|
|
286
|
+
# - Remove unused code
|
|
287
|
+
|
|
288
|
+
# Split into smaller files if needed
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
## Import/Export Errors
|
|
292
|
+
|
|
293
|
+
### Error: "Invalid CSV format"
|
|
294
|
+
|
|
295
|
+
**Problem:** CSV file has formatting issues.
|
|
296
|
+
|
|
297
|
+
**Solutions:**
|
|
298
|
+
```bash
|
|
299
|
+
# Check CSV structure
|
|
300
|
+
$ head -5 contacts.csv
|
|
301
|
+
|
|
302
|
+
# Ensure proper format
|
|
303
|
+
email,first_name,last_name
|
|
304
|
+
user1@example.com,John,Doe
|
|
305
|
+
user2@example.com,Jane,Smith
|
|
306
|
+
|
|
307
|
+
# Check for common issues
|
|
308
|
+
# - Missing header row
|
|
309
|
+
# - Inconsistent column count
|
|
310
|
+
# - Special characters not escaped
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
### Error: "Import failed: duplicate emails"
|
|
314
|
+
|
|
315
|
+
**Problem:** CSV contains duplicate email addresses.
|
|
316
|
+
|
|
317
|
+
**Solutions:**
|
|
318
|
+
```bash
|
|
319
|
+
# Find duplicates
|
|
320
|
+
$ cut -d',' -f1 contacts.csv | sort | uniq -d
|
|
321
|
+
|
|
322
|
+
# Remove duplicates
|
|
323
|
+
$ sort -u -t',' -k1,1 contacts.csv > contacts-unique.csv
|
|
324
|
+
|
|
325
|
+
# Import cleaned file
|
|
326
|
+
$ cakemail contacts import 123 --file contacts-unique.csv
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
## Campaign Errors
|
|
330
|
+
|
|
331
|
+
### Error: "Cannot schedule draft campaign"
|
|
332
|
+
|
|
333
|
+
**Problem:** Campaign is not in correct state.
|
|
334
|
+
|
|
335
|
+
**Solutions:**
|
|
336
|
+
```bash
|
|
337
|
+
# Check campaign status
|
|
338
|
+
$ cakemail campaigns get 790 -f json | jq '.status'
|
|
339
|
+
|
|
340
|
+
# If not draft, unschedule first
|
|
341
|
+
$ cakemail campaigns unschedule 790
|
|
342
|
+
|
|
343
|
+
# Then schedule
|
|
344
|
+
$ cakemail campaigns schedule 790
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
### Error: "Sender not verified"
|
|
348
|
+
|
|
349
|
+
**Problem:** Sender email address not verified.
|
|
350
|
+
|
|
351
|
+
**Solutions:**
|
|
352
|
+
```bash
|
|
353
|
+
# List senders
|
|
354
|
+
$ cakemail senders list
|
|
355
|
+
|
|
356
|
+
# Check verification status
|
|
357
|
+
$ cakemail senders get 101 -f json | jq '.confirmed'
|
|
358
|
+
|
|
359
|
+
# Resend verification
|
|
360
|
+
$ cakemail senders verify 101
|
|
361
|
+
|
|
362
|
+
# Use verified sender
|
|
363
|
+
$ cakemail campaigns update 790 --sender-id 102
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### Error: "List has no contacts"
|
|
367
|
+
|
|
368
|
+
**Problem:** Trying to send to empty list.
|
|
369
|
+
|
|
370
|
+
**Solutions:**
|
|
371
|
+
```bash
|
|
372
|
+
# Check contact count
|
|
373
|
+
$ cakemail lists get 123 -f json | jq '.contacts_count'
|
|
374
|
+
|
|
375
|
+
# Add contacts
|
|
376
|
+
$ cakemail contacts add 123 -e "user@example.com"
|
|
377
|
+
|
|
378
|
+
# Or import
|
|
379
|
+
$ cakemail contacts import 123 --file contacts.csv
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
## Debugging Tips
|
|
383
|
+
|
|
384
|
+
### Enable Verbose Output
|
|
385
|
+
|
|
386
|
+
```bash
|
|
387
|
+
# Most commands support verbose flag
|
|
388
|
+
$ cakemail campaigns list --verbose
|
|
389
|
+
|
|
390
|
+
# Check raw API responses
|
|
391
|
+
$ cakemail campaigns get 790 -f json | jq .
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
### Check CLI Version
|
|
395
|
+
|
|
396
|
+
```bash
|
|
397
|
+
$ cakemail --version
|
|
398
|
+
|
|
399
|
+
# Update if needed
|
|
400
|
+
$ npm update -g @cakemail-org/cakemail-cli
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
### View Configuration
|
|
404
|
+
|
|
405
|
+
```bash
|
|
406
|
+
# Check .env file
|
|
407
|
+
$ cat .env
|
|
408
|
+
|
|
409
|
+
# Verify account
|
|
410
|
+
$ cakemail account show
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
### Test Connectivity
|
|
414
|
+
|
|
415
|
+
```bash
|
|
416
|
+
# Test authentication
|
|
417
|
+
$ cakemail account test
|
|
418
|
+
|
|
419
|
+
# Simple API call
|
|
420
|
+
$ cakemail lists list
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
## Getting Help
|
|
424
|
+
|
|
425
|
+
### Command Help
|
|
426
|
+
|
|
427
|
+
```bash
|
|
428
|
+
# General help
|
|
429
|
+
$ cakemail --help
|
|
430
|
+
|
|
431
|
+
# Command-specific help
|
|
432
|
+
$ cakemail campaigns --help
|
|
433
|
+
$ cakemail campaigns create --help
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
### Check Logs
|
|
437
|
+
|
|
438
|
+
```bash
|
|
439
|
+
# Application logs
|
|
440
|
+
$ tail -f ~/.cakemail/logs/cli.log
|
|
441
|
+
|
|
442
|
+
# System logs
|
|
443
|
+
$ journalctl -u cakemail
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
### Report Issues
|
|
447
|
+
|
|
448
|
+
```bash
|
|
449
|
+
# Gather debug information
|
|
450
|
+
$ cakemail --version
|
|
451
|
+
$ cakemail account show
|
|
452
|
+
$ cat .env | grep -v PASSWORD
|
|
453
|
+
|
|
454
|
+
# Report at:
|
|
455
|
+
# https://github.com/anthropics/cakemail-cli/issues
|
|
456
|
+
```
|
|
457
|
+
|