← MailChannelsCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to MailChannels
Snapshot Sep 30, 2026 · 23:13 UTC · version 1.0.1
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"name": "mailchannels-python",
"description": "Implement MailChannels outbound email with the official `mailchannels` Python package. Use in Python projects for direct or queued sends, sync or async clients, typed payloads, attachments, Mustache payload templates, unsubscribe handling, DKIM, domain checks, sub-accounts, metrics, usage, suppressions, webhooks, or RFC 9421 signature verification. Do not translate JavaScript or PHP SDK method names into Python.",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 248
},
{
"relative_path": "references/recipes.md",
"size_in_bytes": 2454
}
],
"skill_md_contents": "---\nname: mailchannels-python\ndescription: Implement MailChannels outbound email with the official `mailchannels` Python package. Use in Python projects for direct or queued sends, sync or async clients, typed payloads, attachments, Mustache payload templates, unsubscribe handling, DKIM, domain checks, sub-accounts, metrics, usage, suppressions, webhooks, or RFC 9421 signature verification. Do not translate JavaScript or PHP SDK method names into Python.\n---\n\n# MailChannels Python SDK\n\nFollow the project's packaging, framework, configuration, typing, and test\nconventions. Read [references/recipes.md](references/recipes.md) for current\npatterns and resource names.\n\n## Workflow\n\n1. Inspect `pyproject.toml`, lockfiles, Python version, framework, and existing\n mail abstraction.\n2. Install `mailchannels`; add its async extra only when the application uses\n the SDK's async methods.\n3. Load `MAILCHANNELS_API_KEY` from server-side configuration. Use an explicit\n `mailchannels.Client` for each separate credential.\n4. Select direct or queued submission deliberately. Use async methods only\n inside an async application and preserve its concurrency conventions.\n5. Use mappings for compact local code or typed SDK models when payloads cross\n layers and benefit from validation.\n6. Catch only the typed exceptions whose handling differs. Respect retry\n metadata and retry only idempotent application operations.\n7. Test payload construction, error paths, and policy with mocks. Do not send\n live email from ordinary tests.\n8. Add sender-domain checks, signed idempotent webhooks, suppressions, and\n manual setup notes before production.\n\n## Guardrails\n\n- Keep API keys out of source, fixtures, exception messages, browser code, and\n logs.\n- Preserve raw webhook bytes and verify digest, freshness, and signature before\n parsing or applying side effects.\n- Never mutate module-global credentials between concurrent tenant requests.\n- Treat sub-account limits as provider backstops, not application\n authorization or atomic budget reservations.\n- Use reserved example domains and fake recipients in generated tests.\n"
}SHA-256: 5d992ca43cdd3aac47d54768a0d18644e0be84774ed26f56639675a6f9ed1f0e