WordPress Not Sending Email? Here’s How to Fix It (Step by Step)

Fix: WordPress Not Sending Email

Quick answer: WordPress emails usually fail because WordPress sends mail with the server’s basic PHP mail function, which many hosts block and Gmail or Outlook treat as spam. The fix is to send email through a proper SMTP service using a plugin like WP Mail SMTP, FluentSMTP or Post SMTP, and to add SPF, DKIM and DMARC records for your domain.

Missing emails are one of the most frustrating WordPress problems: contact form messages vanish, users never get password resets and customers don’t receive order confirmations. The good news is that the fix is the same for nearly every site.

Why WordPress emails don’t arrive

  • PHP mail is blocked or limited by your host.
  • No authentication. Emails sent from your server aren’t verified as coming from your domain, so inboxes reject them or file them as spam.
  • Wrong “From” address. Using a Gmail or Yahoo address as the sender from your website fails those providers’ checks.
  • Form plugin settings send notifications to the wrong address.
  • Strict sender rules. Since 2024, Google and Yahoo require authentication for bulk senders, and unauthenticated mail is increasingly filtered.

Step 1: Test whether WordPress can send email

Install an SMTP plugin (most include an email test tool) or use your form plugin’s test feature. Send a test to a Gmail and an Outlook address. Check spam folders too. If nothing arrives, or it lands in spam, continue below.

Step 2: Choose an email sending service

OptionGood forNotes
Your business email provider (Google Workspace, Microsoft 365)Low-volume sitesUses your existing mailbox; sending limits apply
Transactional email services (Brevo, Mailgun, SendGrid, Postmark, Amazon SES)Stores, membership sites, busy formsBuilt for reliability; most have free or cheap tiers
Your host’s SMTP serverBasic sitesWorks if your host’s mail reputation is good

Step 3: Install and configure an SMTP plugin

  1. Go to Plugins → Add New and install WP Mail SMTP, FluentSMTP or Post SMTP.
  2. Set the From Email to an address on your own domain (for example hello@yourdomain.com).
  3. Choose your mailer (Google, Microsoft, Brevo, Mailgun, SES, or “Other SMTP”).
  4. Enter the API key or SMTP details from your email service.
  5. Save and send a test email.

Tip: use API connections rather than SMTP passwords where possible — they’re more secure and less likely to be blocked.

Step 4: Add SPF, DKIM and DMARC records

These DNS records prove your emails are genuine. Your email service shows the exact records to add in your domain’s DNS settings.

  • SPF lists which services may send mail for your domain. You can only have one SPF record — combine services into it.
  • DKIM adds a digital signature to each email.
  • DMARC tells inboxes what to do with mail that fails checks. Start with a monitoring policy (p=none).

Google explains these requirements in its email sender guidelines. DNS changes can take a few hours to work.

Step 5: Check your form and plugin settings

  • Make sure the notification “To” address is correct.
  • Set the “From” address to your domain email, and use the visitor’s email as Reply-To instead.
  • Check Settings → General → Administration Email Address is correct.

Comparing form tools? See our best WordPress form plugins.

Step 6: Turn on email logging

Most SMTP plugins can log every email sent. Logs show whether WordPress tried to send a message and whether the service accepted it. If an email is logged as sent but never arrives, the problem is deliverability (DNS records or spam filtering), not WordPress.

Fixing specific email problems

  • Password reset emails missing: fixed by SMTP in almost all cases. In the meantime you can reset a password from the login troubleshooting steps.
  • WooCommerce order emails missing: check WooCommerce’s own email settings too — see WooCommerce not sending order emails.
  • Emails going to spam: add DKIM and DMARC, avoid spammy subject lines and send from your own domain.

Prevent future email problems

  1. Use one dedicated sending service for website mail.
  2. Keep logging on for busy sites.
  3. Re-test after changing hosts — see our migration guide.
  4. Monitor DMARC reports for unauthorised senders.

How to read an email log

When you open your SMTP plugin’s email log, each entry shows the date, recipient, subject and a status. Here is what the common results mean:

  • Sent / Delivered: the service accepted the message. If it’s still missing, check the recipient’s spam folder and your DNS records.
  • Failed — authentication error: the API key or SMTP password is wrong or expired. Re-enter it.
  • Failed — connection timed out: your host may be blocking the SMTP port. Switch to an API-based mailer or ask your host to open the port.
  • No entry at all: WordPress never tried to send it. Check the form or plugin notification settings.

Keeping logs for 30 days is usually enough. On busy stores, turn on log clean-up so the database doesn’t grow too large.

A real-world example: fixing a contact form

A small consultancy noticed its enquiries had dropped to zero. The contact form still showed “Thank you”, but nothing arrived. The cause: their host had restricted PHP mail, and messages were silently failing. The fix took about 20 minutes:

  1. They created a free account with a transactional email service.
  2. They added the service’s SPF and DKIM records to their domain’s DNS.
  3. They installed an SMTP plugin, connected it with an API key and set the From address to their own domain.
  4. They sent test emails to Gmail and Outlook — both arrived in the inbox.
  5. They switched on email logging to spot future problems.

They also found three weeks of enquiries stored as entries in their form plugin — always check there if messages went missing.

Choosing an email service: quick comparison

NeedGood option
Very low volume, already use Google or MicrosoftConnect your Workspace or Microsoft 365 account
Store or membership siteA transactional service with good deliverability and logs
Lowest cost at high volumeA cloud email service billed per email
Simplest setupA service with a direct integration in your SMTP plugin

How to keep email working long term

Once email is fixed, a few habits keep it reliable. Re-send a test email after every major change, such as moving hosts, changing your domain’s DNS provider or switching form plugins. Renew API keys before they expire and store them in a password manager. If you add a new service that sends email for your domain — a newsletter tool or a helpdesk — update your SPF record so you don’t break existing mail. Finally, read your DMARC reports occasionally: they show if someone else is trying to send email pretending to be you.

FAQ

Why does WordPress use PHP mail?

It’s the default that works on most servers without setup. It just isn’t reliable for real-world delivery.

Is SMTP free?

The plugins have free versions, and many email services have free tiers for low volumes.

Do I need a business email address?

You need an address on your own domain for the best deliverability. It can be a sending-only address.

WordPressPrime.com is an independent guide and is not affiliated with the WordPress Foundation, WordPress.org or Automattic. Always back up your website before making changes, and check official sources for the latest details.

Similar Posts

Leave a Reply

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