Skip to content
WordPress

WordPress Not Sending Emails: SMTP Fixes That Work

WordPress not sending emails silently breaks contact forms, order confirmations, and user registrations. Here are all the real fixes — SMTP setup, DNS authentication, and plugin conflicts.

WordPress Not Sending Emails: SMTP Fixes That Work

You click “Submit” on a contact form, hit “Send” in WooCommerce after a purchase, or trigger a password reset — and nothing arrives. No welcome email, no order confirmation, no reset link. WordPress not sending emails is one of the most common and consequential site failures because it silently breaks user flows that visitors depend on. This guide covers every cause and its precise fix, from the PHP mail function failing to misconfigured SMTP, so you can restore email delivery without guesswork. For a broader walkthrough, our WordPress Errors Complete Guide is a good next read.

WordPress Not Sending Emails — Why It Happens

WordPress not sending emails by default is actually an expected limitation rather than a bug. WordPress relies on the PHP mail() function to send all emails — contact form notifications, user registrations, order confirmations, and admin alerts. The problem is that PHP mail is not a real email server. It sends from the web server’s IP address with no authentication, no DKIM signature, and no SPF record alignment. Most receiving mail servers — Gmail, Outlook, Yahoo — immediately reject or spam-filter these messages because they look exactly like what spam looks like.

Your hosting server may also have PHP mail disabled entirely. Many shared hosting providers disable the mail() function as a security measure to prevent spammers from abusing shared server IPs. When PHP mail is disabled, every email WordPress attempts to send silently fails — no error in the WordPress admin, no bounce notification, just nothing reaching the recipient. This is the most common cause of WordPress not sending emails on new WordPress installations where email has never worked.

A third cause is your domain’s email authentication records. Even when PHP mail is enabled and functioning, emails sent from your web server’s IP may lack the SPF, DKIM, and DMARC records that authenticate the sending domain. Without these, receiving servers treat your emails as unauthenticated and either reject them or route them to spam. The fix for all three causes is the same: bypass PHP mail entirely and use SMTP — a proper authenticated mail server — for all WordPress outgoing email.

Install an SMTP Plugin — The Universal Fix

The most reliable solution to WordPress not sending emails is installing a dedicated SMTP plugin and connecting it to a proper mail service. SMTP plugins replace the broken PHP mail function with authenticated SMTP delivery, which guarantees authentication, deliverability, and full logging of every email sent from your site.

The two most widely used free options are WP Mail SMTP (by WPForms) and FluentSMTP. Both replace the broken PHP mail function that causes WordPress not sending emails, supporting all major SMTP services. To install: WordPress admin → Plugins → Add New → search “WP Mail SMTP” → Install → Activate → run the setup wizard. The wizard guides you through connecting to your chosen email service. For most sites, the best free SMTP service options are:

  • Gmail / Google Workspace SMTP — reliable for low-volume sites, requires Google OAuth authentication
  • Brevo (formerly Sendinblue) — generous free tier (300 emails/day), straightforward API key setup
  • Mailgun — developer-friendly, free for low volume with domain verification
  • SendGrid — 100 emails/day free, excellent deliverability, requires domain authentication
  • Your hosting SMTP — cPanel/Plesk provides SMTP credentials for your domain’s email; most reliable for matching SPF records

After connecting SMTP, the built-in “Send Test Email” confirms WordPress not sending emails is resolved. If the test email arrives in your inbox (not spam), the WordPress not sending emails problem is fully resolved. If it arrives in spam, the next section addresses deliverability configuration. According to WordPress.org’s official plugin documentation, SMTP plugins are the recommended approach for all production WordPress sites because they provide delivery logging, error reporting, and authentication that PHP mail cannot.

Check Email Deliverability and Authentication Records

Getting emails out is only half the battle. If your WordPress not sending emails problem manifests as emails sending but going to spam, or bouncing with authentication errors, the DNS records for your domain need to be configured correctly.

Three DNS records govern email authentication and determine why WordPress not sending emails to spam-protected inboxes. Access your domain’s DNS settings through your domain registrar or hosting control panel and verify each:

  1. SPF record — specifies which servers are authorised to send email for your domain. Example: v=spf1 include:_spf.google.com ~all for Google Workspace SMTP. Each SMTP provider specifies the exact include value to add.
  2. DKIM record — a cryptographic signature your SMTP provider generates that receiving servers use to verify email authenticity. Your SMTP provider (Mailgun, SendGrid, etc.) provides the specific DKIM TXT record to add to your DNS.
  3. DMARC record — instructs receiving servers what to do with emails that fail SPF or DKIM. A basic record: v=DMARC1; p=none; rua=mailto:[email protected] starts in monitoring mode without blocking legitimate email.

After adding these records — which resolve the authentication gap causing WordPress not sending emails deliverability failures — DNS propagation takes up to 48 hours but is usually complete within 2–4 hours. Use the free tools at MXToolbox to verify each record is correctly configured. The SPF, DKIM, and DMARC checks all return pass/fail results with specific diagnostic information. A passing result on all three eliminates the deliverability issues behind WordPress not sending emails and ensures emails from your SMTP-connected WordPress site reach inboxes reliably.

Plugin and Theme Conflicts Blocking Email

Beyond the core PHP mail and SMTP issues, WordPress not sending emails from specific forms or specific scenarios often has a plugin or theme conflict as its cause. A security plugin, caching plugin, or WooCommerce setting override can silently cause WordPress not sending emails for specific email types.

Identify the conflicting plugin by testing systematically: navigate to WordPress admin → Plugins → deactivate all plugins except the SMTP plugin and the form plugin you are testing → send a test email. If it arrives, reactivate plugins one at a time, testing email after each, until the conflict reappears. Security plugins like WordFence, iThemes Security, and Sucuri sometimes block outgoing SMTP connections as a firewall rule — check the plugin’s firewall settings for any outbound connection restrictions and whitelist your SMTP provider’s IP ranges.

WooCommerce sends order emails through its own email system which can be configured separately from WordPress’s general email. Navigate to WooCommerce → Settings → Emails → click each email type → verify “Enable this email notification” is checked and the recipient address is correct. WooCommerce’s email system also triggers through WordPress hooks, so an SMTP plugin correctly handles WooCommerce emails without separate configuration. If WooCommerce order emails specifically are not arriving despite the SMTP test email working, check WooCommerce → Status → Logs → filter by “email” to see any email errors WooCommerce has recorded. Our guide on fixing WordPress plugin conflict errors covers the systematic plugin deactivation method that applies here when isolating which plugin is interfering with WordPress not sending emails for specific email types.

Hosting Server Email Restrictions and cPanel SMTP Setup

Shared hosting environments impose specific email restrictions that affect WordPress not sending emails in ways that standard SMTP plugin configurations do not address. Understanding your hosting constraints is key to fixing WordPress not sending emails with the correct SMTP configuration.

cPanel hosting provides a built-in mail server that is the most straightforward SMTP option for shared hosting: cPanel → Email Accounts → create a dedicated WordPress email account (e.g., [email protected]) → note the SMTP hostname, port, and credentials. In your SMTP plugin: SMTP host = your cPanel mail hostname (often mail.yourdomain.com), SMTP port = 465 (SSL) or 587 (TLS), username = the full email address, password = the email account password. This configuration uses your hosting server’s authenticated mail system, which already has correct SPF alignment for your domain. The advantage over external SMTP services is that no third-party dependency exists — email works as long as your hosting account is active.

Some managed WordPress hosts (Kinsta, WP Engine, Flywheel) block PHP mail and all outgoing SMTP connections on non-standard ports. These hosts require using their designated SMTP relay or an API-based email service (SendGrid, Mailgun) rather than traditional SMTP. WP Mail SMTP Pro supports sending via the Mailgun and SendGrid APIs without SMTP, which bypasses port-based restrictions entirely. Check your hosting documentation or contact support to understand which outbound email methods are permitted on your specific plan. This information is the foundation for choosing the correct delivery method and resolving WordPress not sending emails that persists even after a correctly configured SMTP plugin is installed. Our guide on fixing WordPress memory exhausted errors covers the hosting environment configuration that also affects email processing when PHP memory limits interrupt email queue processing mid-send.

Testing, Logging, and Confirming the Fix

After implementing the SMTP plugin and DNS records, systematic testing confirms that WordPress not sending emails is fully resolved across every email type your site generates. A single test email confirms SMTP connectivity but does not verify that all email types — contact forms, WooCommerce orders, user registrations — are working.

Test each email type individually. For WooCommerce: WooCommerce → Settings → Emails → select an email type → Preview → Send Test Email. For contact forms (Contact Form 7, Gravity Forms, WPForms): submit a test entry from the front-end of the site and verify delivery. For user registration emails: create a test user account and check whether the registration welcome email arrives. FluentSMTP and WP Mail SMTP both maintain an email log (SMTP plugin settings → Email Log) showing every email WordPress sent, whether it was delivered, and any delivery errors. The log is the most useful diagnostic tool — if an email appears in the log with a “failed” status and an error message, the error message identifies exactly what broke in the delivery chain.

Set up an email preview and testing environment using a tool like Mailtrap.io during development and staging so that test emails never reach real inboxes but can be inspected in full detail. In the SMTP plugin, pointing to Mailtrap’s SMTP credentials during development allows all outgoing emails to be captured and inspected — headers, HTML rendering, spam score — before the site goes live. Switching the SMTP credentials to the production email service when launching ensures WordPress not sending emails is diagnosed and resolved before users ever experience it. Enabling WordPress debug mode (WP_DEBUG and WP_DEBUG_LOG in wp-config.php) also captures PHP-level email errors that the plugin log might not show, providing the deepest diagnostic view available for persistent delivery failures.

Understanding the difference between emails not sending at all versus emails sending but going to spam is critical for diagnosing WordPress not sending emails correctly. Use the Check Email plugin (available free from the WordPress plugin directory) to send a test email directly from WordPress and receive a detailed delivery report. The plugin tests whether WordPress can dispatch an email and shows the exact error if it cannot — revealing whether the problem is at the PHP mail layer, the SMTP connection, or the authentication level. Running this diagnostic test takes 30 seconds and immediately identifies which section of this guide applies to your specific failure pattern, saving hours of unnecessary troubleshooting on the wrong layer of the email delivery stack.

For sites that process high email volumes — WooCommerce stores, membership sites, or newsletters — the sending limits of free SMTP services become relevant. Brevo’s free tier handles 300 emails per day; SendGrid allows 100; Gmail restricts to 500 per day for regular accounts and 2,000 for Google Workspace. Exceeding these limits causes WordPress not sending emails at peak transaction periods even when the SMTP configuration is correct. Upgrading to a paid SMTP plan or implementing a dedicated transactional email service (Postmark, SparkPost) provides unlimited sending capacity with better deliverability SLAs than free tiers. Monitoring email volume through the SMTP plugin’s email log gives advance warning before hitting limits so they can be upgraded proactively rather than discovered when customer emails start failing during a busy sales period.

Multisite WordPress installations have an additional email consideration: each subsite can have its own from-address and admin email, and the network-level SMTP plugin configuration must be activated network-wide rather than per-site. Navigate to the Network Admin → Plugins → verify the SMTP plugin is Network Activated. Without network activation, individual subsites inherit WordPress’s default PHP mail function while the main site uses SMTP — causing inconsistent email behaviour that appears as WordPress not sending emails from specific subsites. Network-activating the SMTP plugin and configuring a single shared SMTP account at the network level ensures all subsites in the installation send through the same authenticated connection with consistent deliverability across the entire WordPress network. If this sounds familiar, WordPress CORS Error is worth a look.

Nikolas Lamprou

Nikolas Lamprou (MSc; GCFR, SC-200, Security+) has been working with computers professionally since 2009 — starting with web development and e-commerce, and moving into cybersecurity over the years. Based in Greece, he brings over 15 years of real-world IT experience to SolveTechToday, where he writes about Windows fixes, software reviews, security tools, and AI applications. His goal is straightforward: cut through the noise and give readers clear, honest guidance on the tech decisions that matter.

Stay Ahead

Fix your next problem before it starts

Get the week's best Windows fixes, software picks, and security guides delivered straight to your inbox. No noise, just solutions.

Press ESC to close · Try "Windows 11" or "Chrome"