Check emails for spam content
Scan captured emails for spam triggers before production. Identify deliverability issues with automated content analysis.
The problem
Emails with spam-like content end up in junk folders. Discovering this after production deployment means lost password resets, missed invoices and frustrated users.
How ammo.tools solves it
Captured emails are automatically scanned for spam triggers. The spam report shows the overall score, contributing factors and specific rules that fired. Fix issues before your emails reach production.
How it works
- Send your email through ammo.tools SMTP.
- The message is automatically scanned in the background.
- View the spam report in the web interface or fetch it via API.
Fetch spam report via API
curl -H "Authorization: Bearer $AMMO_TOOLS_API_KEY" \ "https://app.ammo.tools/api/v1/messages/MSG_ID/spam-check"
Response format
{
"status": "ready",
"score": 3.2,
"verdict": "review",
"rules": [
{
"name": "MISSING_MID",
"score": 0.5,
"description": "Missing Message-Id header"
},
{
"name": "HTML_IMAGE_RATIO_02",
"score": 0.7,
"description": "HTML has a low text to image ratio"
}
]
}
Trigger a re-scan
curl -X POST -H "Authorization: Bearer $AMMO_TOOLS_API_KEY" \ "https://app.ammo.tools/api/v1/messages/MSG_ID/spam-check"
Useful after updating your email template and sending a new version.
Understanding the score
- Low (0-3): Unlikely to be flagged as spam.
- Review (3-6): May be filtered by aggressive spam settings. Check the rules.
- High (6+): Likely to be flagged as spam. Address the issues before production.
Common issues and fixes
- Missing headers: Ensure your mail library sets Message-Id, Date and proper From headers.
- Low text ratio: Add meaningful text content alongside images.
- Suspicious links: Avoid URL shorteners and ensure links use HTTPS.
- Missing unsubscribe: Marketing emails should include an unsubscribe mechanism.
- Missing plain-text part: Always include a text/plain alternative.
Things to know
- Scanning uses Rspamd, a widely-used open-source spam filter.
- Results reflect content analysis only, not sender reputation or authentication.
- Scanning runs asynchronously; new messages may show "pending" briefly.
- The spam check is informational. Actual delivery depends on recipient mail servers.