How to Fix WordPress Not
Sending Emails (Ultimate 2026 Guide)
Password resets that never arrive. Order confirmations lost in the void. Contact forms sending messages into a black hole. This guide diagnoses every reason WordPress stops sending emails and shows you the permanent fix.
Updated 2026
Step-by-Step Troubleshooting Guide

You set up your WordPress site, everything looks perfect, and then you get a message from a customer: “I never received my order confirmation.” Or you try resetting your own password and the email simply does not arrive. You check your spam folder. Nothing. You wait ten minutes. Still nothing. If this sounds familiar, you are in very good company. WordPress email delivery failures are one of the most common technical problems site owners face, and they are also one of the most misunderstood.
The root of the problem is not actually WordPress itself. It is the way WordPress sends emails by default, using a PHP function called wp_mail() which relies on your web server’s built-in mail handler. Web servers are not email servers. They were never designed to reliably deliver email, and modern spam filters are very good at detecting mail that comes from a web server without proper authentication records. The result: your emails either never leave the server, or they leave and land directly in spam.
This guide covers every layer of the problem, from diagnosing the exact cause in your specific setup to implementing the permanent solution that stops the problem from ever coming back. We will look at what is happening technically, walk through every diagnostic step, and explain why switching to a proper SMTP configuration is the only fix that actually holds.
One note before we dive in: the solutions here are ranked by effectiveness and permanence. Quick fixes may work temporarily, but the only reliable long-term solution is configuring your WordPress installation to send mail through a proper authenticated SMTP connection rather than relying on your server’s PHP mail function.
Why WordPress fails to send emails: the actual technical reason
WordPress uses a function called wp_mail() to send all emails. By default, this function uses PHP’s built-in mail() function, which passes the message to your web server to handle. Your web server then tries to deliver it directly to the recipient’s mail server.
Here is where the problem begins. When Gmail, Outlook, or any other receiving mail server gets an email, the first thing it checks is whether the sending server is authorized to send mail for that domain. This check is done by looking at DNS records, specifically SPF, DKIM, and DMARC records. A web server that was never configured as a mail sender typically has none of these records pointing to it. From the receiving server’s perspective, this looks exactly like spam. So it either rejects the message entirely or sends it to the spam folder.
There is a difference between an email that is never sent (a PHP or server error) and an email that is sent but never received (a deliverability problem). Both look identical to the WordPress site owner. The diagnostic steps for each are completely different. This guide covers both, starting with how to determine which type of problem you actually have.
There is a third scenario that catches many site owners: emails are being sent and delivered correctly, but your mail log has no record of them, which means when a customer claims they never received an order confirmation, you have no way to verify or investigate. An email log plugin for WordPress with full delivery tracking solves this visibility problem entirely and is something every site sending transactional email should have running.
The five most common causes of WordPress email failures
Before you change anything, you need to understand what is actually causing the problem on your specific site. These five causes cover the vast majority of WordPress email delivery failures. Work through them in order.
Many shared hosting providers disable PHP’s mail function entirely to prevent abuse, or they allow it but route it through a restricted mail server with a sending limit. If your host has disabled PHP mail, WordPress simply cannot send any email at all, password resets, form notifications, WooCommerce orders, nothing.
How to diagnose: Contact your hosting provider and ask whether PHP mail is enabled on your account. Alternatively, check your hosting control panel for any email sending settings. If PHP mail is disabled, this explains everything and the fix is SMTP configuration.
This is the silent killer of WordPress email. From your site’s perspective, the email was sent successfully. From your user’s perspective, it never arrived. The emails are actually sitting in spam folders unread. This happens because your server’s IP address is not authorized to send email for your domain, and receiving servers treat it as suspicious.
How to diagnose: Ask a test recipient to check their spam folder. Use a tool like Mail Tester to send a test message and get a spam score. Check whether your domain has SPF and DKIM records configured using a DNS lookup tool.
By default, WordPress sends email from [email protected]. If this address does not exist or is not authorized in your domain’s email records, many receiving servers will reject or flag the message. Similarly, if you have configured an SMTP plugin with incorrect credentials or the wrong port, emails will fail silently.
How to diagnose: Check your WordPress general settings for the admin email address. If you are using an SMTP plugin, test the connection using the plugin’s built-in test function and check for authentication errors.
Multiple plugins hooking into wp_mail() can conflict with each other. If you have installed more than one SMTP or email plugin, or if a security or caching plugin is interfering with outgoing requests, email can break entirely. This is a common issue when migrating sites or after updating plugins.
How to diagnose: Temporarily deactivate all plugins except your email plugin and test again. If email starts working, reactivate plugins one by one to identify the conflict.
On shared hosting, your site shares an IP address with many other sites. If any of those sites have been used to send spam, the IP may be on a email blacklist. Receiving servers check these lists and reject any mail coming from a listed IP, regardless of whether your specific site is involved in anything suspicious.
How to diagnose: Check your server IP on MXToolbox ( mxtoolbox.com/blacklists.aspx ). If your IP appears on any blacklists, contact your host. The real solution is to stop using the server IP for email at all by configuring SMTP through a dedicated email service.
The permanent fix: configuring WordPress SMTP
Every one of the five problems above shares the same root cause: WordPress is trying to send mail through a system that was not designed to be an email server. The permanent fix for all of them is the same: configure WordPress to send email through a proper SMTP service using authenticated credentials.
When you configure SMTP, WordPress stops using the web server to send email and instead hands the message to a dedicated email service, such as Gmail, Google Workspace, Outlook, or a transactional email provider like SendGrid or Mailgun. These services are specifically designed to deliver email reliably, they have proper authentication records, and their IP addresses are recognized as legitimate email senders by every major receiving server.

To configure SMTP in WordPress you need a plugin that can intercept WordPress’s built-in wp_mail() function and redirect outgoing email through your SMTP credentials. You will need to provide the SMTP host (the address of your email server), the port (usually 587 for TLS or 465 for SSL), your email address, and your password or application-specific credentials.
The specific SMTP settings depend on the email provider you choose. Here are the most common configurations:
Step-by-step: setting up SMTP with Nexu Mail SMTP
There are several SMTP plugins available for WordPress, but most of them only solve half the problem. They fix the sending configuration, but they give you no visibility into whether emails are actually being delivered, no log of what was sent and when, and no way to investigate when a customer claims they did not receive a message. Nexu Mail SMTP combines SMTP configuration with a full email delivery log, which means you get both the fix and the visibility to confirm it is working.
Here is how to set it up from scratch:
Install Nexu Mail SMTP from the WordPress dashboard. Once activated, you will find the plugin settings in your WordPress admin menu. Before making any configuration changes, navigate to the Email Log tab first, this lets you establish a baseline of how emails are currently being sent (or not sent) before you change anything.
Go to the SMTP Settings section and enter your email provider’s SMTP host, port, and encryption type. Enter the email address you will be sending from and your password. If you are using Gmail, you will need to use an App Password rather than your regular Gmail password, this is generated in your Google Account security settings under Two-Factor Authentication. This is not optional; Google no longer allows regular passwords for SMTP authentication.
Configure the From Name (what recipients see as the sender name, e.g., “Your Store Name”) and From Email address. This address should match the domain you are sending from and should be a real, deliverable email address. Sending from a mismatched domain or a no-reply address that does not exist in your DNS records is a common spam trigger that many site owners overlook.
Use the built-in test email function to send a test message to yourself. Check that it arrives in the inbox (not spam). Then go to the Email Log and confirm the test email appears in the log with a successful delivery status. If the test fails, the error message in the log will tell you exactly what went wrong, whether that is an authentication failure, a connection timeout, or a configuration error.

Why the email log is as important as the SMTP fix itself
Most site owners configure SMTP, test it once, and assume the problem is permanently solved. Often it is. But sometimes it is not. SMTP connections can fail due to password changes, application credential expiry, account security events, or provider configuration changes. Without an email log, you will only find out about these failures when a customer complains that they did not receive their order confirmation, which may be days after the failure started.
An email log gives you a permanent record of every email your WordPress site attempts to send. This record includes the recipient, the subject, the timestamp, and the delivery status. It means you can proactively check whether emails are going out correctly, investigate specific delivery failures when they are reported, and confirm that critical emails (password resets, order confirmations, user registrations) are reaching their destinations.
Beyond just logging, Nexu Mail SMTP includes a resend function that lets you resend any logged email directly from the WordPress dashboard. When a customer contacts you saying they did not receive their order confirmation, you can look up the email in the log, confirm whether it was sent and to which address, and resend it in two clicks. This eliminates one of the most common customer service headaches for WooCommerce store owners.
For WooCommerce stores in particular, email visibility is a business-critical requirement. Every order triggers multiple emails: order confirmation to the customer, new order notification to the admin, shipping confirmation, delivery notification. If any of these fail silently, customer satisfaction suffers and support load increases. A WordPress SMTP plugin with WooCommerce email tracking and resend turns email delivery from something you hope is working into something you can actively monitor and manage.
SPF, DKIM, and DMARC: the DNS records that make email deliverable
Configuring SMTP solves the sending side of the problem. But if your domain does not have proper authentication records in place, even emails sent through a legitimate SMTP service may end up in spam. Understanding the three DNS records that control email authentication is not optional if you want reliable email delivery.
An SPF record is a DNS TXT record that lists the mail servers authorized to send email for your domain. When you send email through Gmail SMTP, for example, the receiving server looks up your domain’s SPF record to verify that Gmail is an authorized sender. Without an SPF record (or with an incorrect one), many receiving servers will treat your messages as potentially fraudulent. You add an SPF record through your domain’s DNS settings, typically in your domain registrar or hosting control panel.
DKIM adds a cryptographic signature to your outgoing emails. Receiving servers use a public key published in your DNS records to verify that the signature is valid. This proves that the email genuinely came from your domain and has not been tampered with in transit. Most professional email providers (Google Workspace, SendGrid, Mailgun) will provide DKIM records for you to add to your DNS. Setting these up is a one-time task but it significantly improves deliverability.
DMARC builds on SPF and DKIM by telling receiving servers what to do with messages that fail these checks. A DMARC record can instruct receiving servers to reject failed messages, quarantine them, or simply monitor and report them. For most WordPress sites, starting with a monitoring-only DMARC policy (p=none) while you verify that your SPF and DKIM are configured correctly is the safest approach before moving to a stricter policy.

Quick reference: WordPress email troubleshooting checklist
Use this checklist to work through a WordPress email problem systematically. Start at the top and work down, each step rules out a category of problem before moving to the next.
WordPress email problems are frustrating precisely because they are invisible. When a payment goes wrong, you see an error. When a database query fails, WordPress tells you. But when an email does not arrive, nothing on the WordPress dashboard changes. Everything looks fine while emails vanish into the void. The combination of a proper SMTP configuration and a full email log is what makes the invisible visible, so you know what is happening, can catch failures immediately, and can give your users and customers the reliable transactional email experience they expect.
The good news is that once you have these two things in place, authenticated SMTP sending and a log that records every outgoing message. WordPress email stops being a source of problems and becomes something you simply never have to think about again. Nexu Mail SMTP’s all-in-one WordPress email solution is built to give you exactly that: reliable delivery, full visibility, and the tools to respond quickly when anything does go wrong.
Stop guessing. Start knowing every email reaches its destination.
Nexu Mail SMTP fixes WordPress email delivery at the root and adds a full email log so you always know what was sent, when, and whether it arrived. One plugin. The complete solution.

Still not working. Total letdown
Okay so I was pulling my hair out because my contact form just wasn't sending anything like, zero responses for days straight. I was convinced it was totally broken or something. But this guide actually walks you through each possible issue step by step, and turns out it was my hosting's mail settings (who even knew that was a thing?).
as a librarian managing our library's WordPress site, I've run into email issues more times than I'd like to admit. This guide does a solid job breaking down why emails vanish especially the part about wp_mail() relying on the server's mail handler, which I never fully grasped before
Finally emails work!