You have sent a test email and want a second pair of eyes: does the subject fit, are all links absolute and alive, is the unsubscribe link there, is the text readable when images are blocked? Asking a human costs a round trip. An AI assistant answers in seconds — if you hand it the email in a format it can actually read.
Do not paste screenshots — share the machine-readable view
Copy-pasting from a browser loses the headers, the plain-text part and the attachments, and screenshots lose everything else. Instead, use the read-only share link of the inbox: a human opens it in the browser, and an assistant reads the same content as data.
How the export works
Take the share link (/s/…) and append /export:
/s/…/export— JSON with every captured item (default)./s/…/export?format=text— a plain-text digest, ideal for pasting into a prompt.
The JSON looks like this (trimmed):
{
"resource": "inbox",
"name": "Staging app",
"read_only": true,
"exported_at": "2026-09-10T12:00:00+00:00",
"expires_at": "2026-09-11T12:00:00+00:00",
"count": 2,
"items": [
{
"id": 17,
"from": "App <app@example.com>",
"to": ["customer@example.com"],
"subject": "Your invoice #1042",
"received_at": "2026-09-10T11:58:00+00:00",
"text": "Hello! Your invoice is attached.",
"attachments": [{"filename": "invoice.pdf", "contentType": "application/pdf", "size": 18422}]
}
]
}
Webhook shares answer with the request itself: method, URL, query, headers, raw body, IP, user agent and time.
Three prompts that work
Pre-release checklist. Ask for the things that are easy to miss:
Fetch https://sandbox.example.com/s/TOKEN/export?format=text and review the emails.
Check: subject under 60 characters and not ALL CAPS; every link absolute and
reachable; an unsubscribe link present; no placeholder text like "Lorem" or
"{{name}}"; plain-text version readable without images.
Answer with a checklist of problems and a suggested fix for each.
Link and image audit. Give it the HTML part and let it do the boring work:
From the items in that export, list every href and src in the html field.
Flag relative URLs, links that appear twice, images without alt text, and any
link whose text does not say where it goes. Return a table: element, problem, fix.
Subject and spam-risk review. Useful before sending anything real:
Compare the subject and the first paragraph of each email in that export.
Rewrite the subject in under 50 characters, keep the meaning, avoid words that
mail filters dislike (FREE, act now, !!!, ALL CAPS), and keep the tone of the
original. Show a before/after table.
Because the export includes the plain-text part, the model can judge both versions of the email without rendering anything.
Safety rules
- The share link is the credential: treat it like a password. Set the shortest acceptable expiry (one hour is often enough) and revoke it when you are done.
- Send test data only. The sandbox never delivers real mail, but an assistant can still forward what you give it.
- The link is read-only and every response carries
noindex, so crawlers will not store your test message. - The export is capped to the latest items, so a busy inbox cannot return unlimited data.
Automate it in CI
The export is stable JSON, so a job can assert on it without a browser or a model:
- name: Pull the captured email from the sandbox
run: curl -fsS "${{ secrets.SANDBOX_EXPORT_URL }}" -o captured.json
- name: Assert the parts that matter
run: |
jq -e '(.count >= 1)' captured.json
jq -e '(.items | last | .subject) == "Your invoice #1042"' captured.json
jq -e '(.items | last | .attachments | length) == 1' captured.json
Pipe the same file to your own model call if you want the checklist above to fail the build — one endpoint, three consumers: a human in the browser, a script and an assistant.
Next steps
- How to test email sending without sending anything — the four-step sandbox setup this export belongs to.
- How to test webhooks locally without ngrok — the same JSON idea for captured HTTP requests.
- Limits of this instance — how many items the export returns and how long messages live.