If your WordPress emails not sending problem appeared “out of nowhere” (contact forms go quiet, password reset emails never arrive, WooCommerce order notifications stop), you’re not alone—and you’re not crazy. WordPress email issues are extremely common because WordPress doesn’t actually send mail the same way Gmail or your business inbox does.
By default, WordPress relies on wp_mail(), which hands off messages to your server’s mail system (often via PHP mail / sendmail). That system is frequently blocked, rate-limited, misconfigured, or treated as suspicious by receiving providers. And even when wp_mail() returns “true,” that doesn’t guarantee the email was delivered (or even accepted). (WordPress Developer Resources)
This guide walks you through a practical, diagnostic-first checklist to get email flowing again—whether the break is happening at WordPress, a plugin, your host, DNS authentication, or the recipient’s spam filters.
Why WordPress email breaks “suddenly”
When WordPress email stops, the trigger is usually one of these:
- Hosting changes: Your host disables PHP mail, tightens outbound rules, or changes server configuration.
- Plugin/theme update: An update introduces a conflict or fatal error that blocks email hooks.
- From address mismatch: Emails are sent “from” a domain that doesn’t match your site, hurting deliverability (especially for WooCommerce).
- Spam filtering / authentication failures: Missing or broken SPF/DKIM/DMARC means providers may reject or spam-folder your messages (Gmail is particularly strict). (Google Help)
- WP-Cron / loopback failures: Some plugins queue email sending via scheduled events; loopback failures can break that pipeline. (WordPress Developer Resources)
Step 1: Confirm it’s a site-wide problem (not just one plugin)
Before changing settings, prove whether WordPress emails not sending is global or isolated:
Quick tests you can run
- Password reset email (Users → Profile → “Generate Password” / “Lost your password?” on login)
- WooCommerce test order (place a $0 test order if possible)
- A form submission (your contact form / lead form)
If none of these arrive, you likely have a site-wide sending/deliverability issue (SMTP, hosting, DNS). If only one type fails (e.g., Woo orders only), you may have a Woo email configuration issue or template/email notification disabled. (WooCommerce)
Step 2: Check “From” email + notification settings (especially WooCommerce)
WordPress “From” basics
Even if sending is “working,” deliverability tanks when messages claim to come from an address that doesn’t exist or doesn’t match your domain (example: [email protected] or a random Gmail address).
Aim for:
[email protected](real mailbox or at least a valid domain identity)- A human-friendly From Name (“Your Store Name”)
WooCommerce-specific checks
Go to WooCommerce → Settings → Emails and verify:
- The email notifications you need are enabled
- The “From” address is domain-based (not Gmail/Yahoo/etc.)
- You’re not using an email address as the “From name” (WordPress.org)
WooCommerce has its own email troubleshooting guide that’s worth following if the problem is limited to orders/refunds/customer emails. (WooCommerce)
Step 3: Determine whether the email is failing to send vs. being delivered to spam
This is the most important fork in the road.
If emails are not sending at all
Typical signs:
- No logs (or logs show failures)
- SMTP test fails
- Password reset never arrives anywhere (even to a different address)
If emails are sending but not being received
Typical signs:
- Emails arrive sometimes
- They land in spam/promotions
- Gmail shows security warnings
- You see bounces in an email log tool or mail provider dashboard
Google explicitly recommends SPF, DKIM, and DMARC to improve delivery to Gmail accounts, and unauthenticated mail can be rejected or spammed. (Google Help)
Step 4: Stop relying on PHP mail—move WordPress to SMTP (the real fix)
If you want the shortest path from “broken” to “reliable,” route WordPress email through SMTP or an email API (transactional provider). This bypasses flaky server mail and adds authentication + reputation.
Why this matters: WordPress’s wp_mail() is only a wrapper. It can say “success” while the message is still rejected downstream. (WordPress Developer Resources)
Recommended approach
- Install an SMTP plugin (common choices: WP Mail SMTP, Easy WP SMTP, etc.)
- Connect to:
- Your mailbox provider SMTP (Google Workspace/Microsoft 365), or
- A transactional email provider (SendLayer, Mailgun, SendGrid, Postmark, Amazon SES, etc.)
- Send a test email and confirm delivery + headers
Most “PHPMailer not working” WordPress email situations are resolved by authenticating your domain and sending via SMTP instead of PHP mail. (WP Mail SMTP)
Pro tip: After you configure SMTP, test:
- a password reset email
- a WooCommerce order email
- a form notification
Because you want to confirm the full chain, not just a plugin’s “test email” button.
Step 5: Fix DNS authentication (SPF, DKIM, DMARC) so messages stop disappearing
Even with SMTP, bad DNS auth can still kill deliverability.
What to check
- SPF: authorizes which servers can send for your domain
- DKIM: cryptographic signature proving authenticity
- DMARC: policy + reporting that ties SPF/DKIM alignment together
Google’s guidance is blunt: configure SPF, DKIM, and DMARC, or you risk spam placement and rejections. (Google Help)
Common “suddenly stopped” scenario
You switched:
- hosts,
- email providers,
- or SMTP method,
…but didn’t update SPF (so mail now fails alignment). Or someone added a second SPF record (which breaks SPF).
If you have access to DNS (Cloudflare, cPanel, domain registrar), verify:
- Only one SPF record exists
- SPF includes the correct sender (your SMTP provider)
- DKIM is published exactly as your provider specifies
- DMARC is present (even a basic
p=nonepolicy is a start)
Step 6: Check WordPress Site Health for loopback / cron problems (quiet email killers)
Some email sending depends on scheduled events (queues, follow-up emails, subscription emails, delayed Woo triggers). If WP-Cron is broken, those emails never fire.
Go to Tools → Site Health and look for:
- Loopback request failed
- Scheduled events issues
- REST API issues that imply internal requests are blocked
WordPress uses loopbacks to communicate with itself for WP-Cron and related functionality. (WordPress Developer Resources)
If loopbacks fail, common causes include:
- a security plugin blocking internal requests
- host-level firewall rules
- basic auth/password protection
- misconfigured SSL
- server timeouts
If you’re seeing scheduled event problems, Gravity Forms’ documentation explains how WP-Cron is triggered and why it fails in real-world hosting environments. (Gravity Forms Documentation)
Step 7: Rule out plugin/theme conflicts (email failures often piggyback on “other” issues)
A surprising number of “WordPress emails not sending” cases are actually caused by:
- fatal errors,
- plugin conflicts,
- broken hooks,
- or white-screen/500-level instability.
If your issue started after an update (or “overnight”), treat email as a symptom and check your update chain.
A fast way to isolate conflicts is to use a conflict-testing workflow instead of randomly disabling plugins. (WP Fix It’s Conflict Finder is built specifically for diagnosing plugin/theme conflicts—including email-related problems.) (WP Fix It)
Also, if you’ve had stability symptoms (500/503, wp-admin issues), fix those first—email relies on a healthy WordPress runtime. (WP Fix It)
Step 8: Verify WooCommerce email templates aren’t breaking output
WooCommerce emails can fail or render blank if:
- your theme overrides email templates incorrectly,
- a customization plugin injects bad markup,
- or an email customizer conflicts after an update.
Use WooCommerce’s built-in email settings pages to preview and validate configuration. The official docs cover the built-in email types and settings structure. (WooCommerce)
If Woo emails are the only thing failing:
- confirm the specific notification is enabled
- confirm the recipient address is correct
- temporarily switch to a default theme (Storefront) to test
- disable email customizer plugins briefly to isolate
Step 9: Add email logging so you can stop guessing
When email breaks, the worst part is the uncertainty:
- Did it send?
- Did it bounce?
- Did it spam?
- Did WordPress never trigger it?
Enable email logging (many SMTP plugins offer this), or use a lightweight email log plugin.
Logging helps you see:
- timestamps,
- recipients,
- subject lines,
- errors returned by the mailer,
- and whether an email was generated at all.
Even older guides on WordPress email troubleshooting emphasize logging around wp_mail() activity because it’s the single choke point for most outbound mail. (FluentCRM)
Step 10: Common root causes + fixes (quick reference)
1) Your host blocks PHP mail
Symptoms: Everything fails; SMTP fixes it instantly.
Fix: Use SMTP/API. Ask host if outbound port restrictions exist.
2) Emails go to spam (especially Gmail)
Symptoms: Some delivery, poor inbox placement.
Fix: SPF/DKIM/DMARC + consistent From domain. (Google Help)
3) Wrong From address in WooCommerce
Symptoms: Test email works, but Woo order emails don’t.
Fix: Use domain-based From + verify Woo email notifications enabled. (WordPress.org)
4) Plugin conflict after an update
Symptoms: Email stops at same time as other weirdness.
Fix: Conflict isolation + rollback if needed. (WP Fix It)
5) WP-Cron / loopback failure
Symptoms: Delayed emails never send; Site Health complains.
Fix: resolve loopbacks, security rules, basic auth, SSL problems. (WordPress Developer Resources)
A practical “do this in order” checklist (15–30 minutes)
- Send a password reset email to a non-Gmail address (like a work inbox) and to Gmail.
- Check spam/junk and search your inbox for the subject.
- Confirm WooCommerce → Settings → Emails notifications are enabled and From address is domain-based. (WooCommerce)
- Install/configure SMTP and send a test email. (WP Mail SMTP)
- Verify SPF/DKIM/DMARC for your sender domain. (Google Help)
- Open Tools → Site Health and address loopback/cron warnings. (WordPress Developer Resources)
- If the issue started after updates, isolate plugin/theme conflicts (don’t guess). (WP Fix It)
- Add email logging, resend failed emails if your tool supports it, and confirm consistent delivery.
Internal resources (WP Fix It)
If your email issue appeared alongside instability (errors, admin problems, or a bad update), these are directly relevant:
- Plugin/theme conflict isolation (a common underlying cause of email breakage). (WP Fix It)
- Fixing the “critical error” flow (note: WordPress often emails recovery mode links—so if you’re not receiving those, email reliability matters even more). (WP Fix It)
- WordPress 500/503 and wp-admin not loading troubleshooting (email failures often tag along when the site runtime is unhealthy). (WP Fix It)
- If an auto-update broke things overnight, a safe rollback process can restore normal behavior quickly. (WP Fix It)
And if you’re at the point where leads/orders are at risk, it’s often faster to have an expert trace the exact failure point end-to-end. (WP Fix It)
FAQ
“My SMTP test email works, but WooCommerce order emails still don’t send—why?”
Usually one of these:
- Woo notification disabled
- Woo “From” settings incorrect
- email customizer/template override issue
- a plugin conflict specific to checkout/order status transitions
Start with WooCommerce email troubleshooting docs, then check Woo settings and conflicts. (WooCommerce)
“Why did WordPress emails stop sending without me changing anything?”
Because something else changed:
- host policy update
- mail reputation/auth changes
- DNS edits
- plugin auto-update
- firewall rule changes
- PHP version change
That’s why the checklist focuses on proving where the break is rather than guessing.
“What’s the best long-term fix?”
For most sites: SMTP or a transactional email provider + SPF/DKIM/DMARC + logging. That combination eliminates the most common reasons WordPress emails not sending keeps coming back. (Google Help)
Final takeaway
When WordPress emails not sending hits forms, password resets, and WooCommerce orders at the same time, it’s almost never “just one setting.” It’s typically the server mail method, authentication/deliverability, or a conflict introduced by an update.
If you do only one thing: switch WordPress to authenticated SMTP/API delivery, then validate DNS auth. That solves the majority of real-world failures—and it turns email from a fragile afterthought into something you can trust. (WP Mail SMTP)




