The email health report
Every email your app sends through simmail gets a health report. In the dashboard it is the Health tab on a message. With the API:
curl -s -G https://c1.simmail.dev/api/inspect \ -H "Authorization: Bearer smk_your_key" \The Message-ID includes its angle brackets. Only mail your app (or you) sends is inspected, over SMTP or with POST /api/send; mail written by people is not. Without a report for that id, the API answers 404.
The spam score is ready as soon as the message is accepted. The link check runs in the background for up to a minute; links_done says when it has finished.
Spam score
Section titled “Spam score”"spam": { "engine": "rspamd", "score": 4.2, "junk": 6, "reject": 15, "action": "no action", "rules": [ { "name": "MIME_HTML_ONLY", "score": 1, "description": "Message has only an HTML part, no plain text", "fix": "Send a plain-text alternative alongside the HTML." } ]}| Field | Meaning |
|---|---|
engine | rspamd when a Rspamd server scored it (the engine many real mail servers run), or builtin for simmail’s own checks on the same scale. |
score | The total. Higher is spammier. |
junk, reject | Where mail usually starts going to junk (6) and where servers refuse it (15). |
action | What a server would do: no action, add header (junk) or reject. |
rules | Each finding that moved the score, with a plain-English fix for the common ones. |
error | Set when Rspamd failed and the built-in checks stood in. |
note | Set when date checks were left out because the simulated clock is not on real time. |
The built-in checks look for: a missing Date, Message-ID, To or MIME-Version header; an empty or all-capitals subject; repeated exclamation marks; HTML without a plain-text part; phrases typical of spam; repeated dollar signs; URL shorteners; mail that is mostly images; and a From address without a display name.
People react to the score too. See Junk and spam consequences.
Links and images
Section titled “Links and images”Every link and image in the message (up to 25) is fetched and checked. Unsubscribe links are noted but never followed, since following one could unsubscribe someone.
| Field | Meaning |
|---|---|
links | Each link or image: url, text, kind (link or image), status, final_url, ok, error and ms. |
broken | Links that failed or answered with an error. |
local | Links to the sender’s own machine or private network, such as localhost. These are testing links, not faults. |
dangerous | Links listed as dangerous by Google Web Risk, when the server checks them. |
unsubscribe | Whether there is a way off the list: a List-Unsubscribe header or an unsubscribe link. |
Client compatibility
Section titled “Client compatibility”For HTML mail, compat checks the HTML and CSS against how real email clients handle it, using caniemail.com’s test data.
| Field | Meaning |
|---|---|
score | The share of feature and client pairs that fully work, in percent. |
features | How many features the message uses. |
problems | Each feature that fails or partly works somewhere: title, fails and partial (client keys), notes, fix and a link to caniemail. |
broken | Clients where at least one feature fails. |
labels | Client keys and their names, such as Outlook on Windows. |
updated | The date of the compatibility data. |
People notice: a person whose mail program breaks part of your layout may mention it.
Accessibility
Section titled “Accessibility”For HTML mail, access applies checks drawn from WCAG 2.2 that matter in email: alt text, contrast, layout tables, headings, link text such as “click here”, text size, the document language and a plain-text part.
| Field | Meaning |
|---|---|
score | 100 means no findings. |
issues | Each finding: rule, severity (error, warning or info), message, fix, wcag and up to five samples. |
screen_reader | The message as a screen reader would read it out. |
People who use a screen reader respond to what it read out to them. See style.access in People.
The spam score, the rules and the link check are in every plan. The compatibility and accessibility details need the full inspection feature of your plan. Without it, the report keeps the counts and scores but each problem reads “Upgrade to see”, the screen-reader text is empty, and locked is true. Full inspection also lets people react to a broken layout or poor accessibility in their replies.