WordPress
How to fix WordPress not sending email: a step-by-step guide

Short answer
WordPress not sending email usually comes down to one cause: PHP mail(), its default sender, adds no authentication (no SPF/DKIM/DMARC), so providers drop the message or bury it in spam. The lasting fix is an authenticated SMTP connection with a properly configured sending domain.
This guide walks through why WordPress not sending email happens, how to diagnose it correctly, and how to fix it step by step without losing any data.
Why WordPress not sending email happens
WordPress sends nearly every notification — password resets, new-user alerts, comment approvals, contact form submissions — through a built-in function called wp_mail(). That function isn’t a mail service of its own; behind the scenes it simply calls the server’s PHP mail() function. That’s exactly where the trouble starts: PHP mail() claims to have sent the message, but it attaches no SPF, DKIM or DMARC authentication at all. According to WordPress’s own function reference, wp_mail() returning true doesn’t even mean the recipient received the email — it only means the request was processed without an error.
Gmail, Outlook and other major providers treat mail from an unauthenticated source as untrustworthy and either route it straight to spam or reject it entirely. On top of that, many shared hosting providers restrict or disable the PHP mail() function outright to prevent abuse. So WordPress not sending email is rarely a single bug — it’s usually the combination of missing authentication and a hosting-side restriction.
The most common causes behind WordPress not sending email
- The hosting provider limiting or disabling the PHP
mail()function for security reasons - No SPF, DKIM or DMARC records ever configured for the domain’s DNS
- A generic “From” address (like
[email protected]) instead of the site’s own domain - A security or caching plugin silently blocking outgoing mail
- Emails technically being sent but landing in the recipient’s spam folder
Diagnose the problem correctly first
Before trying to fix WordPress not sending email, confirm the problem actually exists and where it’s happening. The fastest test is running your own “forgot password” flow and checking, within a few minutes, whether the email arrives — spam folder included. If nothing arrives at all, WordPress is failing to send the email in the first place; if it arrives late or in spam, the issue is more likely with authentication records.
Before installing anything, a lightweight logging plugin like WP Mail Logging records every email WordPress attempts to send and any error returned along the way. That log makes it clear whether the cause is a plugin conflict, a server restriction or a wrong address, saving a lot of trial and error.
How to fix WordPress not sending email: step by step
The most reliable way to fix WordPress not sending email for good is switching the site from PHP mail() to an authenticated SMTP connection. That takes five steps.
1. Install an SMTP plugin
A plugin like WP Mail SMTP, Easy WP SMTP or Post SMTP reroutes all of WordPress’s outgoing mail through an authenticated SMTP server instead of wp_mail()’s default PHP mail() path. Setup is usually just activating the plugin and following its configuration wizard — no technical background required.
2. Connect to a trustworthy email provider
Through the plugin, you can connect to a business email account such as Google Workspace, Zoho Mail or Yandex, or to a transactional email service like Brevo, Amazon SES or SendGrid. A business email account is enough for low-volume notifications; a site sending large volumes of automated mail (newsletters, order confirmations) will get better deliverability and scale from a transactional service.
3. Add SPF, DKIM and DMARC records
Add the SPF, DKIM and, if available, DMARC records your email provider gives you to your domain’s DNS settings. These records cryptographically prove to receiving servers that a message really came from your domain through an authorized sender; without them, mail can still land in spam even after SMTP is correctly configured.
4. Match the “From” address to your own domain
A sender address on your own domain (like [email protected]) is treated as far more trustworthy than a generic or server-assigned address (like [email protected]). That match directly affects how receiving servers score your reputation, and it looks more professional to recipients.
5. Test the connection and check the log
Once everything is set up, use the plugin’s own “send a test email” feature to confirm the connection, then run a real flow end to end — a password reset or a contact form submission. WordPress not sending email is usually fully resolved after these five steps; if it isn’t, the log’s error message points to whatever step is still missing.
Bonus: measure your spam score independently
Once SMTP and the DNS records are in place, don’t rely on your own impression of how trustworthy the email looks — measure it. Sending a test message to a free tool like mail-tester.com shows, within seconds, whether SPF/DKIM/DMARC are correctly detected and whether your sending server shows up on any blacklist. A low score is a sign that WordPress not sending email may look technically “fixed” while recipients still see it as untrustworthy.
When a WordPress contact form isn’t sending email
Contact form plugins (Contact Form 7, WPForms, Gravity Forms) generally don’t run their own mail engine — they rely on the same wp_mail() function in the background. That means the form interface can work flawlessly, showing a “your message was sent” confirmation, while the email layer underneath is broken and the message never reaches your inbox; everything looks fine to the visitor while the business quietly loses leads. That’s why, when a contact form issue is reported, checking the SMTP connection and the mail log first is faster than debugging the form itself. We cover other common critical WordPress errors — the white screen of death, a 500 error, a database connection error — in our WordPress white screen of death guide.
Common mistakes
The five mistakes that come up most often while fixing WordPress not sending email:
- Installing a plugin before confirming the problem. Sometimes the cause is a simple hosting setting; installing a plugin without checking the log first can mask the real cause.
- Setting up SMTP but skipping DNS records. An authenticated connection doesn’t fully solve deliverability if SPF/DKIM records are still missing — both are needed together.
- Sticking with a generic “From” address. A sender address that isn’t on your own domain hurts your reputation score even with SMTP correctly configured.
- Testing only once. One test email going through doesn’t mean every type of email (notifications, forms, receipts) is going through; each flow needs its own test.
- Never checking the spam folder. In many cases assumed to be “email never arrived,” the email was actually sent — it just landed in spam.
Checklist
Before considering WordPress not sending email fully resolved, run through this list:
- Did the password reset or contact form test email arrive, spam folder included?
- Was a send attempt logged with a logging plugin, along with any error message?
- Is an SMTP plugin installed and connected to a trustworthy provider?
- Have SPF, DKIM and DMARC records been added to the domain’s DNS?
- Does the “From” address match the site’s own domain?
- Was a real user flow (form, order, password reset) tested end to end?
Next step
WordPress not sending email is usually fixable for good in under an hour when you work through it in the right order — but left undiagnosed, it can quietly cost you customers and leads. Once it’s set up correctly (SMTP plus the right authentication records), it rarely comes back. If you’d like to make your site’s technical foundation more resilient, or move to an infrastructure that’s better prepared for critical errors, our group company Web Tasarım Ofisi supports WordPress setup, maintenance and technical troubleshooting.
To review your custom software needs or critical flows like your contact form together, take a look at our custom software service or get in touch with us.
Sources
- WordPress developer reference — wp_mail() — what the function returns and where it stops
- WordPress plugin handbook — official documentation for plugin development and SMTP configuration
Frequently asked questions
Why is WordPress not sending email?
By default WordPress sends email through the wp_mail() function, which in turn calls the server's PHP mail() function. PHP mail() doesn't add authentication (SPF/DKIM/DMARC), so many mail providers flag it as spam or reject it outright; some hosts also restrict the function for security reasons.
Can I fix WordPress not sending email without a plugin?
Sometimes: if the issue is only a wrong 'From' address or a single hosting setting, fixing that may be enough. For a reliable, permanent fix, though, routing mail through an authenticated SMTP connection (via a plugin) is the sturdier approach.
Why do SPF, DKIM and DMARC records matter?
These three DNS records prove to the receiving mail server that an email genuinely came from your domain through an authorized sender. Without them, even a working SMTP connection can still land in spam or get rejected.
Why might a WordPress contact form not send email?
Contact form plugins usually rely on the same wp_mail() function in the background rather than running their own mail engine. That means the form itself can work perfectly while the underlying email layer is broken, so the message never arrives.
Which SMTP provider should I use?
For low-volume business email, Google Workspace, Zoho Mail or Yandex work well. For high-volume automated sending — notifications, receipts, bulk mail — a transactional email service like Brevo, Amazon SES or SendGrid is a more scalable, more reliable choice.