All Modules LITE & PRO

Mail Health Inspector

"Why isn't WordPress sending email?" — diagnosed in one page. Transport detection, sender-authentication DNS, and a live send test that shows the real failure message.

  • 4DNS Checks
  • 10SMTP Plugins Detected
  • LiveSend Test

What This Module Does

"WordPress isn't sending email" is one of the most searched WordPress support questions — and one of the hardest to diagnose without the right tools. The problem could be the mail transport (no SMTP plugin configured), a DNS authentication issue (missing SPF, DKIM, or DMARC records causing mail to land in spam), or a configuration error that only shows up in the actual mailer error log. The Mail Health Inspector surfaces all three in one place.

It detects your current mail transport, performs live DNS lookups for the four sender-authentication records, and includes a send test that captures the mailer's actual failure reason via WordPress's own wp_mail_failed action — the same mechanism used by debugging plugins, but without any third-party dependency.

Features at a Glance

Mail Transport Detection

Checks your site against 10 known SMTP and transactional mail plugins (WP Mail SMTP, FluentSMTP, Post SMTP, Mailgun, SendGrid, WP Offload SES, and more). Also detects when wp_mail() has been replaced by a pluggable override and identifies the source file. If no SMTP plugin is found and PHP mail() is in use, a clear warning explains why this is a deliverability problem.

SPF Record Check

Queries the DNS TXT record for your site's domain and looks for a valid v=spf1 record. SPF tells receiving mail servers which servers are authorized to send email on behalf of your domain. Missing SPF is one of the most common reasons WordPress transactional email lands directly in spam or gets rejected entirely.

DKIM Key Detection

Probes 10 common DKIM selectors (default, google, selector1, selector2, mail, s1, s2, and more) looking for a valid v=DKIM1 TXT record. DKIM provides cryptographic proof that your email hasn't been tampered with in transit. If a key is found, its selector is displayed; if not found, an explanatory note is shown — because some providers use custom selectors that aren't in the common list.

DMARC Policy Analysis

Queries _dmarc.yourdomain.com for a DMARC policy record. Shows the full record and extracts the policy (none, quarantine, or reject). A p=none policy monitors but doesn't protect — Gmail and Yahoo's 2024 bulk-sender requirements now expect a DMARC record, and p=none earns a warning suggesting you move to quarantine or reject once SPF and DKIM are confirmed passing.

Live Send Test with Real Failure Messages

Sends a tokenized test email to the currently logged-in admin through the exact mail pipeline the site uses. The result shows whether wp_mail() accepted the message — but also captures the actual mailer error via the wp_mail_failed action hook. If delivery fails, you see the real reason from the mailer, not a generic error. The token in the subject line makes it easy to find the message in the inbox (or spam folder — which itself is a diagnostic signal).

Why It Matters

  • "WordPress isn't sending email" is one of the top five WordPress support requests — and answering it usually requires checking the transport, the DNS, and the actual mail log in three different places. This module puts all three in one screen.
  • WooCommerce order confirmation emails, contact form notifications, and password reset emails all go through wp_mail() — a misconfigured or unauthenticated setup silently drops every one of them
  • Gmail and Yahoo's 2024 bulk-sender requirements mandate SPF, DKIM, and a DMARC record — sites without them now see significantly higher spam placement rates for transactional mail
  • The send test captures the mailer's real error message via wp_mail_failed — the most specific diagnostic information available without installing a dedicated debugging plugin
  • Acceptance ≠ delivery: the module explicitly notes this after a successful send test, prompting you to check the spam folder — the second most common cause of "I'm not receiving emails"

Frequently Asked Questions

My SMTP plugin is configured. Why is mail still not working?

Run the live send test — it captures the actual failure message from the mailer via wp_mail_failed. The most common causes even with an SMTP plugin configured: incorrect credentials, wrong port number (587 vs 465), TLS vs SSL mismatch, or a restrictive hosting firewall blocking outbound SMTP connections on those ports. The error message from the send test usually names the exact cause.

What does "acceptance ≠ delivery" mean on the send test result?

wp_mail() returning true means your server accepted the message for sending — it doesn't mean the message reached the recipient's inbox. The mail server still has to deliver it, and the receiving server can still reject it (for bad SPF/DKIM/DMARC) or route it to spam. After a successful send test, always check the inbox and the spam folder. If it lands in spam, the DNS section of this module will show you why.

My SMTP plugin isn't being detected — why?

The detection checks active plugin file paths against 10 known plugin slugs. If your SMTP plugin uses an unusual folder name or is a premium plugin not in the detection list, it may not be identified by name — but the module will still detect if phpmailer_init is hooked (which all SMTP plugins use) and flag it as "SMTP likely configured." The send test will confirm whether it's working.

Does the send test send a real email?

Yes — it sends one email to the email address of the currently logged-in administrator. The subject line contains a unique token so you can find it easily. It goes through the exact same pipeline as any other WordPress email, so it's a genuine end-to-end test of your mail configuration.

Why isn't my DKIM key found even though I've configured it?

The module probes 10 common DKIM selectors. Your provider may use a custom selector name not in that list — this is common with Mailgun, SendGrid, Amazon SES, and custom mail servers. If your DKIM is configured but uses a custom selector, the module shows a note explaining this rather than incorrectly flagging it as missing. Check your mail provider's documentation for the exact selector name they use.

Stop Guessing Why WordPress Isn't Sending Email

Transport detection, DNS authentication checks, and a live send test with real failure messages — in one place, for free.

Get Full Pro Access

Pro adds 14 modules, including Root Cause Analysis, Conflict Detector, Plugin Health Check, and Health Digest for weekly monitoring.

Get Pro Now

Try the Free Lite Version

Mail Health Inspector is fully free in Lite — alongside 12 other diagnostic modules, no account required, no expiry.

Download Lite — Free