fix-wordpress-not-sending-emails

How to Fix WordPress Not Sending Emails (Step-by-Step Guide)

Table of Contents

📍 Start Here: Find Where the Email Is Failing

If WordPress is not sending emails, first find out where the email is failing.

Check whether:

  • WordPress created the email.
  • Your contact form or WooCommerce triggered it.
  • Your SMTP or mail provider accepted it.
  • SPF and DKIM authentication passed.
  • Gmail or another receiving server rejected it.
  • The email went to spam or quarantine.
  • A scheduled WordPress task failed.

Do not start by installing several SMTP plugins. Find the exact problem first, then apply the correct fix.

WordPress emails can stop working without warning.

A customer may submit a contact form, but you never receive the notification. Someone may request a password reset and wait for an email that never arrives. Your WooCommerce store may accept an order correctly while the customer receives no confirmation.

Sometimes WordPress even reports that an email was sent successfully, but nothing appears in the recipient’s inbox.

The important thing to understand is that these situations do not always have the same cause.

WordPress may fail to create the message. Your SMTP or email provider may reject it. Your domain authentication may fail. Gmail, Outlook, Yahoo, or a business email server may also accept the message but send it to spam or quarantine.

WordPress uses the wp_mail() function for email. A successful result from wp_mail() does not prove that the recipient received the message. It only means the sending method processed the request without reporting an error.

👉 Learn more about WordPress email functions: wp_mail() Function Reference

This guide will help you fix WordPress not sending emails by finding the exact point where the problem happens.

You will learn how to check SMTP, contact forms, WooCommerce emails, password resets, hosting restrictions, SPF, DKIM, DMARC, WP-Cron, migrations, Gmail errors, and email logs. Instead of trying random fixes, we will follow the email from WordPress all the way to the inbox.

📨 Follow a WordPress Email from Site to Inbox

A simple WordPress email journey looks like this:

WordPress or Plugin → wp_mail() → SMTP/API Mail Provider →

Email Authentication → Receiving Server → Inbox or Spam

A problem can happen at any stage.

For example:

  • A contact form may have the wrong recipient.
  • WooCommerce may not trigger the expected notification.
  • SMTP login details may be incorrect.
  • Your hosting provider may block an outgoing connection.
  • SPF or DKIM may fail.
  • Gmail may reject an unauthenticated message.
  • A company email system may quarantine it.

This is why installing another SMTP plugin is not always the answer.

how-wordpress-email-delivery-works

Sending Failure vs. Delivery Failure

Before changing anything, determine which problem you have.

ProblemCheck First
Test email cannot be sentSMTP or hosting
SMTP authentication failsLogin details or mail provider
WordPress says sent but nothing arrivesDelivery and authentication
Email reaches spamAuthentication and sender reputation
Only contact forms failForm settings
Only WooCommerce emails failWooCommerce settings and triggers
Scheduled emails failWP-Cron or background jobs
Problem started after migrationDNS, server, or mailer setup

Knowing the difference can save hours of unnecessary troubleshooting.

🚨 Why WordPress Emails Fail or Disappear

1. Contact Form Says Sent but No Email Arrives

A successful form message does not prove that the email reached your inbox.

Possible causes include:

  • Wrong recipient address
  • Incorrect From address
  • SMTP failure
  • Failed email authentication
  • Spam filtering

If other WordPress emails work, troubleshoot the contact form before changing your whole email setup.

2. WordPress Emails Go to Spam

If messages reach the spam folder, WordPress is probably creating and sending them.

Focus on:

  • SPF
  • DKIM
  • DMARC
  • Sender domain alignment
  • Sender reputation
  • Sending practices

Authentication simply means proving to Gmail or another email provider that your domain is allowed to send the message.

3. SMTP Is Configured but Emails Still Fail

Installing an SMTP plugin does not guarantee successful email delivery.

Possible problems include:

  • Wrong username or password
  • Wrong SMTP server
  • Incorrect port
  • Encryption mismatch
  • Expired API key
  • Expired OAuth connection
  • Unverified sender
  • Hosting restrictions

Always read the exact SMTP error before changing settings.

4. WooCommerce Order Emails Are Missing

WooCommerce uses different emails for different events.

Examples include:

  • New order
  • Processing order
  • Completed order
  • Failed order
  • Refunded order
  • New account
  • Reset password

If one email is missing, the problem may be the WooCommerce trigger or order status rather than SMTP.

5. Emails Stop After a Migration or DNS Change

Moving a WordPress website can affect:

  • SMTP login details
  • API keys
  • SPF
  • DKIM
  • DMARC
  • Domain verification
  • Mail-related DNS records
  • Server restrictions

Your website pages can work normally while email remains broken.

6. Gmail Rejects WordPress Emails

Gmail has email authentication requirements.

For email sent to personal Gmail accounts, Google requires all senders to meet its sender guidelines, including SPF or DKIM authentication. Senders sending more than 5,000 messages per day to Gmail accounts must meet additional requirements, including SPF, DKIM, DMARC, and domain alignment.

👉 Google email sender guidelines: Email Sender Guidelines

Unauthenticated or incorrectly configured messages may be rejected or sent to spam.

✅ How to Fix WordPress Not Sending Emails Step by Step

Step 1: Check Spam, Junk, and Quarantine

Start with the easiest check.

Send a test email and look inside:

  • Inbox
  • Spam
  • Junk
  • Promotions
  • Quarantine, if your email system has one

If the email reaches spam, your problem is probably email delivery rather than a complete sending failure.

Do not install another SMTP plugin yet.

Step 2: Verify the WordPress Admin Email

Go to:

WordPress Dashboard → Settings → General

Check the Administration Email Address.

  • Typing mistakes
  • Old email addresses
  • Deleted mailboxes
  • Incorrect domains

Remember that individual plugins can use their own notification addresses. Changing the WordPress admin email does not automatically change every plugin’s email settings.

Step 3: Check the From Address

Suppose your website is:

example.com

A suitable sender could be:

notifications@example.com

Avoid making WordPress pretend that a form email came directly from:

visitor@gmail.com

A better setup is:

From: forms@example.com

Reply-To: visitor@gmail.com

This keeps the sender on a domain you control while still allowing you to reply directly to the visitor.

Step 4: Test More Than One Type of Email

Do not test only your contact form.

  1. A contact form submission
  2. A password-reset email
  3. An SMTP or mailer test
  4. A WooCommerce test email if you run a store

If Nothing Works

Check the site-wide SMTP, API mailer, hosting, or email configuration.

If Password Reset Works but the Contact Form Does Not

Check the form settings.

If SMTP Test Works but WooCommerce Does Not

Check WooCommerce settings, triggers, and logs before changing SMTP.

Step 5: Check Email Logs

An email log can answer several important questions:

  • Was an email created?
  • Who was the recipient?
  • When was it created?
  • Was an error reported?

If the message never appears in your mail log, check the plugin, form, order trigger, or scheduled task.

If the message appears in the log, continue checking the delivery process.

Privacy Warning

Email logs can contain recipient addresses and message information.

Keep only the logs you need and protect them from unauthorized access.

wordpress-smtp-email-troubleshooting

Step 6: Configure SMTP or an API Mailer

Many WordPress websites benefit from using an authenticated SMTP or API-based transactional email provider.

A typical SMTP setup may require:

SettingPurpose
SMTP HostOutgoing email server
PortConnection port
EncryptionSecure connection
UsernameLogin
Password/App PasswordAuthentication
From EmailSender address
From NameSender name

Always use the exact settings supplied by your email provider.

Never copy SMTP hostnames, ports, usernames, or other settings from a random tutorial.

Step 7: Fix a Failed SMTP Test

If your SMTP test fails, read the actual error.

If your SMTP test fails, read the actual error.

Authentication Failed

Check:

  • Username
  • Password
  • App password
  • API key
  • OAuth connection

Connection Timed Out

Check:

  • SMTP hostname
  • Port
  • Firewall
  • Hosting restrictions
  • Provider availability

Sender Not Verified

Verify your From address or sending domain with your email provider.

Could Not Connect to SMTP Host

Check:

  • Hostname
  • Port
  • Encryption
  • DNS
  • Outgoing server restrictions

The exact error often tells you what to fix.

🔐 Email Authentication Fixes

wordpress-spf-dkim-dmarc-email-authentication

Step 8: Configure SPF Correctly

SPF helps receiving email servers check which systems are allowed to send mail for your domain.

Your domain may send mail through several services, such as:

  • Business email
  • WordPress transactional mail
  • CRM software
  • Newsletter service

Your SPF setup should account for the legitimate services that actually send email for your domain.

Important SPF Warning

Do not blindly create a second SPF record if your domain already has one.

Multiple separate SPF policies can cause problems.

Follow the instructions from your actual email providers and make sure legitimate senders are included in the correct SPF configuration.

Step 9: Configure DKIM

DKIM adds a digital signature to outgoing messages.

Your email provider normally gives you a DNS record to add to your domain.

After configuring it, send another test message.

When viewing email authentication results, you want to see a successful DKIM result such as:

dkim=pass

Use the DKIM settings supplied by your email provider rather than creating random DNS values yourself.

Step 10: Configure DMARC Carefully

DMARC works with SPF and DKIM.

It helps receiving email servers decide what to do when authentication or domain alignment fails.

Common policies include:

p=none

p=quarantine

p=reject

Do not immediately use a strict p=reject policy unless you understand your complete email setup.

A safer process is:

  1. Identify all legitimate senders.
  2. Configure SPF.
  3. Configure DKIM.
  4. Test authentication.
  5. Add DMARC based on your setup.
  6. Monitor the results.
  7. Increase enforcement when appropriate.

A strict policy added too early can block legitimate email.

Step 11: Understand DMARC Alignment

DMARC does more than check whether SPF or DKIM exists.

It also checks whether the authenticated domain matches, or properly aligns with, the domain shown to the recipient in the From address.

In simple words:

The domain claiming to send the email should match the domain that has permission to send it. This is another reason not to make your WordPress site pretend that an email came directly from a visitor’s Gmail address.

Step 12: Fix Gmail 5.7.26 Errors

If Gmail returns a 5.7.26 authentication-related error, do not reinstall WordPress.

Check:

  • Does SPF pass?
  • Does DKIM pass?
  • Is the correct sending domain being used?
  • Is DMARC configured correctly for your setup?
  • Is the From address correct?
  • Which service actually sent the message?

Always read the full Gmail error message, not only the number. Different email errors can look similar, and the full response provides the best clue.

🧩 Troubleshoot Forms and Woo Commerce Emails

fix-wordpress-contact-form-not-sending-email

Step 13: Fix Contact Form 7 Not Sending Emails

Go to:

Dashboard → Contact → Contact Forms → Your Form → Mail

👉 Official Contact Form 7 mail settings: Contact Form 7 Mail Tab

Check the following settings.

To

Make sure the recipient address exists and is typed correctly.

From

Use an email address belonging to your website’s domain.

Example:

forms@example.com

Reply-To

Use the visitor’s email here.

For example:

Reply-To: [your-email]

This allows you to reply to the visitor without pretending that the message was originally sent from their Gmail or Yahoo account.

If the form still fails:

  1. Submit another test.
  2. Check the email log.
  3. Check SMTP or provider logs.
  4. Check spam.

Verify SPF and DKIM.

Step 14: Fix WPForms Notifications

Open:

WPForms → All Forms → Your Form → Settings → Notifications

Check:

  • Notifications are enabled.
  • Send To address is correct.
  • From address is correct.
  • Reply-To is correct.
  • Smart Tags are correct.
  • Conditional notification rules are not blocking the message.

If SMTP tests and password-reset emails work but WPForms notifications do not, troubleshoot the form before changing the main mailer.

fix-woocommerce-order-emails-not-sending

Step 15: Fix WooCommerce Emails Not Sending

Go to:

WooCommerce → Settings → Emails

👉 WooCommerce email documentation: WooCommerce Email Settings

Check the affected email notification.

WooCommerce includes emails such as:

  • New order
  • Cancelled order
  • Failed order
  • On-hold order
  • Processing order
  • Completed order
  • Refunded order
  • Customer note
  • Reset password
  • New account

Check Whether the Email Is Enabled

Open the affected notification and make sure it is enabled.

Check the Order Status

Different order statuses trigger different emails.

For example, a Completed Order email will not behave the same way as a New Order email.

Check the Customer Address

Open the order and confirm that the customer’s email address is correct.

Send a Test Email

Current WooCommerce email settings support test emails, which can help separate a template/settings issue from a delivery problem.

Check WooCommerce Transactional Email Logs

Go to WooCommerce → Status → Logs and look for the transactional-emails log source. It can show whether WooCommerce marked an email as sent, failed, disabled, or skipped.

If the email should have been generated but was not, check WooCommerce logs for failed or skipped transactional emails and fatal errors.

If no expected transactional email is created, investigate the trigger, plugin conflicts, or PHP errors.

Step 16: Fix Password Reset Emails

If WordPress password-reset messages do not arrive:

  1. Check the user’s saved email address.
  2. Check spam and junk.
  3. Check your WordPress email log.
  4. Check SMTP or provider logs.
  5. Test another WordPress email.

If every other email works, investigate:

  • Security plugins
  • Membership plugins
  • Login plugins
  • Recipient filtering

Password-reset workflow

🌍 Check Hosting, DNS, and Migration Changes

wordpress-email-problems-after-migration

Step 17: Fix Emails After Moving Your Website

After changing hosting, test:

  • SMTP credentials
  • API keys
  • From address
  • SPF
  • DKIM
  • DMARC
  • Domain verification
  • Outgoing email restrictions

Do not consider a website migration complete until important transactional emails have also been tested.

Step 18: Check DNS After Changing Nameservers

Changing nameservers can accidentally remove or replace important mail records.

Verify:

  • MX
  • SPF
  • DKIM
  • DMARC
  • Email-provider verification records

A working homepage does not prove that your email DNS is correct.

Step 19: Do Not Randomly Change MX Records

MX records mainly tell other email servers where incoming mail for your domain should be delivered.

Changing MX records blindly to fix a WordPress outgoing notification can break your business email.

Only change them when your actual email provider tells you to.

Step 20: Check Hosting Email Restrictions

Hosting providers may restrict:

  • PHP mail
  • SMTP connections
  • Certain ports
  • Sending volume
  • Server resources

If your SMTP details look correct but WordPress cannot connect, contact your hosting provider.

Ask:

Are outgoing connections from my WordPress website to my email provider and required SMTP port allowed?

This can quickly rule out a server-level block.

If your server is also blocking access to parts of WordPress, check our guide: Fix WordPress 403 Forbidden Error

🔍 When the Basic Email Fixes Don’t Work

Step 21: Check Plugin Conflicts

If emails stopped immediately after a plugin update, investigate that change.

Possible causes include:

  • SMTP plugins
  • Contact form plugins
  • Security plugins
  • WooCommerce extensions
  • Membership plugins
  • Email customizers
  • Login plugins

Use a staging site when possible.

Disable the suspected plugin and run the same email test again.

Avoid using multiple SMTP plugins at the same time unless you have a specific technical reason.

Step 22: Check WP-Cron and Background Tasks

Not every WordPress email is sent immediately.

Plugins may use scheduled jobs for:

  • Reports
  • Membership reminders
  • Follow-up emails
  • Subscription tasks
  • WooCommerce automation
  • Scheduled notifications

If normal emails work but scheduled emails fail, investigate WordPress scheduling.

Check wp-config.php for:

define( ‘DISABLE_WP_CRON’, true );

This setting is not automatically wrong.

Some websites disable normal WP-Cron because they use a real server cron job instead.

If WP-Cron is disabled, confirm that another scheduler is actually running.

Step 23: Check PHP and WordPress Error Logs

A PHP error can stop a process before WordPress creates the email.

If your site is also returning a server error while emails fail, follow our guide: Fix WordPress 500 Internal Server Error before continuing with mail troubleshooting.

For temporary troubleshooting, WordPress debugging can be configured like this:

define( ‘WP_DEBUG’, true );

define( ‘WP_DEBUG_LOG’, true );

define( ‘WP_DEBUG_DISPLAY’, false );

The log is normally stored at:

/wp-content/debug.log

Reproduce the problem and review recent errors.

If the same plugin, theme, or function appears repeatedly, investigate it.

Important

Do not leave unnecessary debugging enabled forever on a live website.

Protect debug logs from public access because they may contain sensitive technical information.

If the logs point to database connectivity problems instead, follow our guide: Fix Error Establishing a Database Connection in WordPress

Step 24: Check API-Based Email Providers

Not every WordPress mailer uses traditional SMTP.

Some use an email provider’s API.

If an API-based mailer stops working, check:

  • API key
  • OAuth connection
  • Token expiration
  • Domain verification
  • Account status
  • Provider logs

Do not troubleshoot every API failure as an SMTP-password problem.

⛔ Email Fixes That Can Make the Problem Worse

Avoid these common mistakes:

  • Installing several SMTP plugins.
  • Using the visitor’s email as the From address.
  • Creating random SPF records.
  • Adding multiple SPF policies without understanding the existing setup.
  • Moving immediately to a strict DMARC policy.
  • Changing MX records blindly.
  • Testing only one email address.
  • Ignoring SMTP or bounce logs.
  • Assuming “sent” means “delivered.”
  • Publishing SMTP passwords or API keys.
  • Changing many settings at the same time.

Make one meaningful change, test again, and record the result.

🧭 Trace the Email from WordPress to the Inbox

⚡ Match the Email Problem to the First Check

No WordPress emails workSMTP/API mailer test
Contact Form 7 only failsForm Mail settings
WPForms only failsNotification settings
WooCommerce only failsEmail trigger, status, and logs
SMTP test failsExact SMTP error
SMTP works but email is missingAuthentication and delivery
Gmail shows 5.7.26Full error + SPF/DKIM/DMARC
Emails reach spamAuthentication and sender reputation
Broke after migrationMailer + DNS
Scheduled emails failWP-Cron/background jobs
Only one recipient failsRecipient filtering

Use this simple process whenever WordPress email fails.

1. Was the email triggered?

If not, check the form, WooCommerce order status, registration process, or scheduled task.

2. Did WordPress create the email?

Check your email log.

If it did not, investigate plugin settings or PHP errors.

3. Did the Email Provider Accept It?

Check SMTP or API logs.

If not, investigate login details, connectivity, account status, or provider settings.

4. Did Authentication Pass?

Check:

  • SPF
  • DKIM
  • DMARC

5. What Did the Receiving Server Do?

Look for:

  • Delivered
  • Deferred
  • Bounced
  • Rejected

6. Where Did the Message Land?

Check:

  • Inbox
  • Spam
  • Promotions
  • Quarantine
  • Recipient filters

This process turns a vague “WordPress email doesn’t work” problem into a specific technical issue.

✅ Keep WordPress Emails Working Reliably

Once your emails are working correctly:

  • Use one properly configured SMTP or API mailer.
  • Use a domain-based From address.
  • Configure SPF correctly.
  • Enable DKIM.
  • Configure DMARC carefully.
  • Keep WordPress updated.
  • Keep email and form plugins updated.
  • Test important transactional emails regularly.
  • Check logs after major changes.
  • Test emails after website migrations.
  • Verify DNS after changing nameservers.
  • Monitor scheduled email workflows.
  • Protect SMTP passwords and API keys.

A dependable setup looks like this:

WordPress → SMTP/API Provider → Authenticated Domain →

Receiving Server → Recipient

Once email delivery is stable, you can also improve your overall site performance: Speed Up Your WordPress Website

🧑‍💻 Still Not Receiving WordPress Emails?

If you have checked the trigger, email logs, SMTP/API connection, authentication, DNS, and recipient filtering but messages still fail, deeper troubleshooting may be required.

Professional WordPress support can help investigate:

  • SMTP configuration
  • Contact form problems
  • WooCommerce email failures
  • Plugin conflicts
  • PHP errors
  • DNS and authentication problems
  • WP-Cron failures
  • Website migration issues
  • Server restrictions

When asking for technical help, provide:

  • Exact error message
  • Approximate test time
  • Sender address
  • Recipient domain
  • Message ID, if available
  • Relevant mail logs

Specific evidence is much easier to diagnose than simply saying, “WordPress email doesn’t work.”

💬 WordPress Email FAQs

Why is WordPress not sending emails?

Common causes include incorrect sender or recipient settings, SMTP failures, hosting restrictions, plugin problems, failed scheduled tasks, and email authentication issues. Start by finding out whether WordPress created the email and whether your mail provider accepted it.

Why does WordPress say an email was sent but nothing arrives?

A successful WordPress sending result does not guarantee inbox delivery. The message can still be delayed, bounced, rejected, quarantined, or placed in spam.

Do I need SMTP for WordPress?

Not always. WordPress can send email when the hosting environment provides a working mail system. However, an authenticated SMTP or API-based transactional mailer often provides better logging, authentication, and troubleshooting.

Why is Contact Form 7 not sending emails?

Check the To, From, and Reply-To fields. The From address should belong to your website’s domain. The visitor’s address can normally be used in Reply-To.

Why are WooCommerce order emails missing?

Check whether the correct notification is enabled, whether the order reached the status that triggers the email, and whether the customer’s address is correct. Then check WooCommerce and mail-provider logs.

Why are WordPress emails going to spam?

Possible causes include authentication problems, sender reputation, spam complaints, sending patterns, or recipient filtering. SPF, DKIM, and DMARC are important, but authentication alone does not guarantee inbox placement.

What are SPF, DKIM, and DMARC?

SPF helps identify servers allowed to send mail for your domain. DKIM adds a digital signature that helps prove the message is genuine. DMARC uses authentication and domain alignment to apply a policy and provide reporting.

What does Gmail 5.7.26 mean?

It can indicate an email authentication problem. Read the complete Gmail error and check SPF, DKIM, DMARC, the From address, and the domain actually sending the email.

Why did WordPress emails stop after changing hosting?

Your new server may have different outgoing email restrictions or may be missing your SMTP/API configuration. DNS authentication and sender verification may also need to be checked.

Why do test emails work but scheduled emails fail?

Your email connection may be working correctly while WP-Cron, server cron, a plugin queue, or another background task is failing.

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *