Use whenever code sends email and tests must check it: capture messages in Mailpit's local SMTP server (port 1025) and assert on them through its REST API, test SMTP failures with chaos mode, follow multipart, link, unsubscribe and bounce flows, or migrate from MailHog.
97%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Deep reference for mailhog-legacy.md. Consult when moving an existing MailHog deployment to Mailpit (the host SKILL.md), the actively maintained successor with a flatter API.
MailHog has had no significant release since ~2020 and is effectively unmaintained. Mailpit is the actively maintained successor with a flatter JSON schema, a single REST API for both reads and deletes, and richer per-recipient chaos configuration.
| MailHog | Mailpit equivalent |
|---|---|
SMTP on 1025 | SMTP on 1025 (same) |
HTTP UI on 8025 | Web UI on 8025 (same) |
GET /api/v2/messages | GET /api/v1/messages (path differs; flat schema) |
GET /api/v2/search?kind=to&query=... | GET /api/v1/search?query=to:... (Lucene-ish syntax) |
DELETE /api/v1/messages | DELETE /api/v1/messages (same path) |
mailhog -invite-jim | Chaos mode (richer per-recipient config) |
The largest test-code change is the message schema. MailHog nests the
subject as Content.Headers.Subject[0] (an array) and the body as
Content.Body; Mailpit exposes a flat Subject string and moves the body
to Text. Every assertion that walks MailHog's nested structure must be
rewritten against Mailpit's flatter shape.
MailHog's Jim chaos monkey (mailhog -invite-jim) injects random connection
drops and slow responses at globally configured probabilities. Mailpit's
Chaos mode replaces it with per-recipient configuration, so migrate
resilience tests to Mailpit Chaos rather than porting Jim's flags.