
Fix WordPress Not Sending Email: The Ultimate 2025 Troubleshooting Guide
Table of Contents
Introduction: The Silent Crisis of a Muted WordPress Site
You’ve set up your WooCommerce store, and a new order comes in. But the confirmation email never reaches your customer. A reader leaves a thoughtful comment on your blog, but the moderation email never hits your inbox. A user requests a password reset and is left staring at their empty mailbox, frustrated.
This is the silent, invisible problem plaguing countless WordPress websites: WordPress not sending email.
If your website is running on most shared hosting platforms (like Bluehost, SiteGround, GoDaddy, etc.), there’s a very high probability that the default WordPress email system is broken. It might work intermittently, or it might not work at all. The consequences are severe: lost sales, poor user experience, damaged credibility, and missed opportunities.
But don’t panic. This is not a terminal illness for your site; it’s a common condition with a clear cure. This comprehensive, 3000-word guide will act as your diagnostic manual and repair kit. We will dive deep into the root causes of WordPress email failures and walk you through every possible solution, from quick checks to robust, permanent fixes.
By the end of this article, your WordPress site will be a reliable communication hub, sending every email perfectly and on time.
Why Your WordPress Site Isn’t Sending Emails: Understanding the Core Problem
To fix the problem, you first need to understand it. WordPress, by default, uses a simple PHP function called mail() to send all its emails. This includes:
- User registration emails
- Password reset links
- Comment moderation alerts
- WooCommerce / EDD order notifications
- Contact form submissions (that use
wp_mail) - Admin notifications
Here’s the critical part: the mail() function doesn’t actually have its own mail server. It simply hands off the email to the underlying server (your web host) and says, “Please send this.” This is where the breakdown happens.
The 4 Main Culprits of WordPress Email Failure
- Poor Server Configuration: Many shared hosts do not have a properly configured “localhost” mail server. The
mail()function is often disabled or severely restricted to prevent abuse by spammers. - Emails Marked as Spam: Even if the
mail()function works, the emails are often sent from a generic server name (likeserver12.hostingcompany.com). They lack proper authentication records (SPF, DKIM), so major email providers like Gmail, Outlook, and Yahoo see them as suspicious and route them straight to the Spam folder or block them entirely. - Strict PHP Configuration: Hosts can impose limits on the
mail()function via thephp.inifile, restricting its usage. - Plugin Conflicts: Sometimes, a poorly coded plugin can interfere with the
wp_mailfunction, hijacking it or causing it to fail.
The solution, therefore, almost always involves bypassing the unreliable mail() function and using a dedicated, authenticated method for sending emails.
Step 1: Diagnosis – Confirming the Email Failure
Before you start changing settings, you need to confirm that emails are failing and identify what type.
Use a Diagnostic Plugin
The easiest way to test is with a plugin. Install and activate the WP Mail Logging plugin. This brilliant plugin logs every single email that WordPress attempts to send. You can see the “To” address, subject, and whether the process was triggered.
After activating it, try to trigger an email—for example, by using the “Forgot Password” feature on your login page. Then, go to WP Mail Log > Mail Log in your WordPress admin. If you see the email in the log, it means WordPress is trying to send it, but it’s failing somewhere between your server and the recipient’s inbox. If it’s not in the log, the request isn’t even being triggered, which could point to a theme or plugin conflict.
Send a Test Email
For a more direct test, use the Email Log plugin or a dedicated SMTP plugin (like WP Mail SMTP) that includes a testing feature. This allows you to send a test email directly from your WordPress dashboard to your own email address.
Step 2: The Quick Fixes (The 5-Minute Checklist)
Before moving to more advanced solutions, run through these quick checks. You might get lucky!
- Check Your Spam/Junk Folder: It sounds obvious, but it’s the most common “fix.” The email you’re expecting might be sitting there.
- Deactivate All Plugins: A plugin conflict is a common cause. Temporarily deactivate all your plugins (yes, all of them). Then, try sending a test email (like a password reset). If it works, you know a plugin is the culprit. Reactivate them one by one, testing after each, to find the offending plugin.
- Switch to a Default Theme: Similarly, your theme’s
functions.phpfile might have code that interferes with thewp_mailfunction. Temporarily switch to a default WordPress theme like Twenty Twenty-Four and test again. - Check with Your Hosting Provider: Contact your host’s support. Simply ask them: “Is the PHP
mail()function enabled on my server, and are there any restrictions?” They can often tell you immediately if it’s disabled or has a sending limit.
If these quick fixes don’t resolve the issue, it’s time to implement a permanent, professional solution.
Step 3: The Permanent Fix – Using an SMTP Plugin (The RIGHT Way)
This is the #1 recommended solution for fixing WordPress email issues. SMTP stands for Simple Mail Transfer Protocol. It’s the standard method for sending emails across the internet.
Instead of using the unreliable PHP mail() function, an SMTP plugin authenticates with a real, dedicated mail server using a username and password (or an API key). This is exactly how your personal email client (like Outlook or Apple Mail) works.
Why an SMTP Plugin is the Best Solution:
- Dramatically Improved Deliverability: Emails are sent from a trusted, authenticated source, so they land in the inbox, not spam.
- Reliability: Dedicated SMTP services are built for one thing: sending emails. They are far more reliable than your web host’s makeshift mail server.
- Logging: You can see the exact status of every sent email—whether it was delivered, bounced, or rejected.
- SMTP is the Standard: It’s the universally accepted method for sending transactional emails.
How to Set Up an SMTP Plugin in WordPress
We will use the popular and excellent WP Mail SMTP plugin for this demonstration.
- Install the Plugin: In your WordPress dashboard, go to Plugins > Add New. Search for “WP Mail SMTP,” install it, and activate it.
- Go to the Settings: Navigate to WP Mail SMTP > Settings.
- Choose Your Mailer: This is the most important step. You need to choose which SMTP service to use. Here are the best options:
Option A: Use Your Hosting Provider’s SMTP (Easy)
Some hosts, like SiteGround and Kinsta, provide their own SMTP details. Check your host’s documentation or support. If they offer it, select “Other SMTP” in the plugin.
- SMTP Host: Your host will provide this (e.g.,
mail.yourdomain.comorssl://smtp.hostingcompany.com). - Encryption: Usually SSL on port 465 or TLS on port 587. Your host will specify.
- Authentication: Set to “Yes.”
- Username & Password: Often your cPanel login credentials or a specific email account you’ve created.
Pros: Usually free, integrated.
Cons: Deliverability may not be as good as dedicated services.
Option B: Use Your Gmail / G Suite Account (Good for Low Volume)
You can use your personal or business Gmail account.
- Mailer: Select “Gmail.”
- You will need to create an “App Password” for WordPress, as regular password authentication no longer works. (Google “Gmail App Password” for instructions).
- Enter your Gmail address and the 16-character app password.
Pros: Free for personal Gmail, good deliverability.
Cons: Gmail has strict sending limits (~500 emails/day for free accounts), requires 2-factor authentication.
Option C: Use a Dedicated Transactional Email Service (Best for Business)
For any serious business website, e-commerce store, or high-traffic blog, this is the gold standard. Services like Sendinblue (Brevo), SendGrid, Postmark, or Mailgun are designed specifically for this purpose. They offer high delivery rates, detailed analytics, and generous free tiers.
Let’s use Sendinblue (Brevo) as an example, as it has a great free plan (300 emails/day).
- Create a Sendinblue Account: Go to their website and sign up for a free account.
- Verify Your Sender Identity: This is crucial for authentication. You’ll need to verify your domain or email address.
- Get Your SMTP Credentials: Inside your Sendinblue account, go to SMTP & API section. You’ll find your SMTP Server (e.g.,
smtp-relay.sendinblue.com), Port (587), and a unique SMTP Key (which acts as your password). - Configure WP Mail SMTP:
- Mailer: Select “Other SMTP.”
- SMTP Host:
smtp-relay.sendinblue.com - Encryption: Use TLS
- Port:
587 - Authentication: Yes
- Username: Your Sendinblue login email address.
- Password: The SMTP Key from your Sendinblue account.
- Send a Test Email: The WP Mail SMTP plugin has a “Email Test” tab. Use it to send a test email to yourself. If configured correctly, you will receive it almost instantly!
Step 4: Advanced Solutions (For Developers & DIY Enthusiasts)
If you are code-savvy and don’t want to use a plugin, you can implement SMTP directly.
Manually Configure SMTP in wp-config.php
You can add SMTP settings directly to your WordPress configuration file. Warning: Editing wp-config.php can break your site if done incorrectly. Always back it up first.
php
// Manually Set SMTP Settings in wp-config.php define( 'SMTP_HOST', 'smtp.your-email-provider.com' ); // Your SMTP host define( 'SMTP_AUTH', true ); define( 'SMTP_PORT', '587' ); // The port for your SMTP service define( 'SMTP_SECURE', 'tls' ); // Encryption - 'ssl' or 'tls' define( 'SMTP_USERNAME', 'your-email@yourdomain.com' ); // SMTP username define( 'SMTP_PASSWORD', 'your-smtp-password' ); // SMTP password define( 'SMTP_FROM', 'your-email@yourdomain.com' ); // The from email address define( 'SMTP_FROMNAME', 'Your Site Name' ); // The from name
Use a PHP Mailer Library via functions.php
You can also use code in your theme’s functions.php file (preferably in a child theme) to force WordPress to use the PHPMailer library with your SMTP settings.
php
// Use PHPMailer for SMTP via functions.php
add_action( 'phpmailer_init', 'send_smtp_email' );
function send_smtp_email( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.your-email-provider.com';
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 587;
$phpmailer->Username = 'your-email@yourdomain.com';
$phpmailer->Password = 'your-smtp-password';
$phpmailer->SMTPSecure = 'tls'; // or 'ssl'
$phpmailer->From = 'your-email@yourdomain.com';
$phpmailer->FromName = 'Your Site Name';
} Step 5: Troubleshooting Common SMTP Setup Errors
Even with an SMTP plugin, you might encounter errors.
- “SMTP ERROR: Password command failed” / “Authentication Failed”: Double-check your username and password (or API key). For Gmail, ensure you are using an App Password, not your regular password.
- “Could not connect to SMTP host”: This is a connection issue. Verify your SMTP Host and Port number. Try switching between SSL and TLS encryption. Sometimes, your web host might be blocking outbound SMTP connections on certain ports; you may need to contact them.
- Emails are still going to spam: You likely need to set up SPF and DKIM records in your domain’s DNS. These are TXT records that tell the world which mail servers are authorized to send email on behalf of your domain. Your SMTP service provider (Sendinblue, SendGrid, etc.) will have explicit instructions on what values to add to your DNS.
Conclusion: Regain Control of Your WordPress Communications
A WordPress site that doesn’t send email is like a car without wheels—it might look good, but it can’t take you anywhere. The frustration of lost orders, missed comments, and locked-out users is entirely preventable.
To recap the journey:
- Diagnose the problem with a logging plugin.
- Rule out simple conflicts with plugins and themes.
- Implement the permanent, professional solution: an SMTP plugin.
- Choose a reliable mailer, with a dedicated service like Sendinblue (Brevo) being the best choice for businesses.
- Authenticate your domain with SPF/DKIM to ensure inbox placement.
Don’t let a technical glitch harm your business or your relationship with your audience. Take 15 minutes today to install and configure an SMTP plugin. The peace of mind that comes from knowing your site’s communication is reliable is priceless.
What has been your experience with WordPress email issues? Which solution worked for you? Share your story in the comments below!


Leave a Reply