BLACK FRIDAY: 50% OFF all Pro plans
Pro from $18 a year or $60 lifetime, no code needed
Ends Cyber Monday, 30 Nov. Lock in the price today
Get 50% Off

WordPress Not Sending Emails? 7 Fixes That Work in 2026

Contact form messages, password resets and order emails going missing? Here is why WordPress email fails and seven fixes, in the order you should try them.

In this article

A visitor fills in your contact form and you never see the message. A customer asks for a password reset and the link never arrives. A new order comes in and nobody gets the receipt.

If WordPress not sending emails sounds familiar, you are not alone. The cause is almost always one of a small handful of things, and you can usually fix it in under an hour without paying for anything.

This guide explains why WordPress email fails, how to tell which problem you have, and seven fixes in the order you should try them.

Why WordPress emails go missing

WordPress sends every email through one function called wp_mail(). By default, it passes the message to PHP’s mail() function on your web server, using the PHPMailer library that ships with WordPress. There is no login, no password and no proof of who sent it.

That was fine fifteen years ago. Today it causes three problems.

  • Your web server is not a mail server. Shared hosting puts hundreds of sites on one IP address. If one neighbour sends spam, the reputation of that address drops for everyone.
  • Nothing proves the email is from you. Gmail or Outlook sees a message that claims to come from your domain, sent by a machine it has no reason to trust.
  • The default sender looks odd. Unless you change it, WordPress sends from wordpress@yourdomain.com. That mailbox usually does not exist.

One more detail explains why this problem is so sneaky. The official WordPress documentation states that a “true” result from wp_mail() does not mean the person received the email. It only means WordPress handed the message over without an error. Your form can happily show “Message sent” while the email dies somewhere down the line.

Inboxes got stricter, and small sites feel it too

Google and Yahoo started enforcing new sender rules in February 2024. Microsoft followed on May 5, 2025 for Outlook.com, Hotmail.com and Live.com addresses.

The strictest rules apply to anyone sending 5,000 or more emails a day. Those senders must pass SPF and DKIM, and publish a DMARC record. Industry guides report that Google moved from temporary delays to outright rejections for non-compliant bulk mail in late 2025.

Your small business site is not a bulk sender. But the same spam filters judge your mail, and authentication is now the baseline they expect from everyone. An unauthenticated email from a shared server is exactly what those filters are built to catch.

First, find out which problem you have

What you see Most likely cause Start with
No email at all, not even in spam Host blocks or limits PHP mail, or the send failed Fix 1, then 2
Email arrives but lands in spam No SPF, DKIM or DMARC, or a poor shared IP Fixes 2, 3 and 4
Works for some addresses, fails for Gmail or Outlook Authentication missing or not aligned Fixes 3 and 4
Password resets arrive, form notifications do not Form uses the visitor’s address as the sender Fix 5
It worked for months, then stopped Plugin conflict, expired key or password, host change Fixes 1 and 6

7 fixes for WordPress not sending emails

1. Send a test email and turn on logging

Do not guess. Install a mail logging or SMTP plugin that includes a test email tool, then send a test to a Gmail address and an Outlook address.

The log tells you two things: whether WordPress tried to send the message, and what error came back. If the log is empty after a form submission, the problem is the form settings, not the email system.

Developers can also listen to the wp_mail_failed hook, which fires whenever PHPMailer reports an error.

2. Stop using PHP mail and switch to SMTP

This one change fixes most cases. SMTP means WordPress logs in to a real mail server with a username and password or an API key, instead of throwing the message over the fence.

You have three options:

  1. Your hosting mailbox. Free and quick, fine for a low-traffic brochure site.
  2. Google Workspace or Microsoft 365. Good if you already pay for business email.
  3. A transactional email service. The best choice for stores, membership sites and anything that sends receipts. Many offer a free tier that covers a small site.

Setup is the same in each case. Install an SMTP plugin, pick your mailer, paste in the API key or server details, and send a test. If you enter server details by hand, port 587 with TLS is the usual choice, with port 465 and SSL as the alternative.

3. Add SPF and DKIM records

These two DNS records prove that your email is real.

SPF is a TXT record that lists the servers allowed to send mail for your domain. A domain can only have one SPF record, so if you already have one, add the new service to it instead of creating a second.

DKIM adds a digital signature to each message. Your email provider gives you one or more records to copy into your DNS.

Add both wherever your domain’s DNS is managed. That might be your registrar, your host or a service like Cloudflare. Changes often show up within minutes, but allow up to 48 hours.

4. Publish a DMARC record

DMARC tells inboxes what to do when SPF and DKIM fail, and it sends reports back to you. A safe starting record is a TXT record at _dmarc.yourdomain.com with this value:

v=DMARC1; p=none; rua=mailto:you@yourdomain.com

The p=none policy is the minimum the big providers ask for. It changes nothing about delivery while you watch the reports. After a few clean weeks, move to p=quarantine and later to p=reject.

One rule to remember is alignment. The domain in your From address must match the domain that passes SPF or DKIM.

5. Fix the From address in your forms

This is the most common mistake in contact forms. Many people set the From field to the visitor’s email so they can hit reply. But your server is not allowed to send mail for gmail.com, so the message fails DMARC and vanishes.

Set it up like this instead:

  • From: an address on your own domain, such as hello@yourdomain.com. Use a real mailbox.
  • Reply-To: the visitor’s email field.

You still reply with one click, and the email passes authentication. This applies to every form builder, including forms built in Elementor.

6. Rule out conflicts and hosting limits

If email worked and then stopped, look for what changed.

  • Two SMTP plugins active at once will fight each other. Keep one.
  • API keys and app passwords expire or get revoked. Reconnect your mailer.
  • Many hosts cap the number of emails per hour, and some block outgoing mail ports. Ask support.
  • Security plugins and firewalls can block the outbound connection.

Make a habit of sending a test email after big updates. WordPress 7.1.3 arrived on October 6, 2026, and a one-minute test after each update catches problems before your customers do.

7. Protect your sender reputation

Once email works, keep it working.

  • Add spam protection to every form, such as a honeypot or CAPTCHA. Bots that submit forms can trigger thousands of notification emails and burn your reputation.
  • Do not send newsletters from your WordPress server. Use an email marketing service for bulk mail.
  • Keep complaints low. The published guideline from the big inbox providers is to stay under a 0.1% spam rate and never reach 0.3%.

Frequently asked questions

Why is my WordPress contact form not sending emails? The two usual causes are the default PHP mail method, which inboxes do not trust, and a From address that does not belong to your domain. Switch to SMTP, then set From to your own address and Reply-To to the visitor’s.

Do I need a paid plugin to fix WordPress email? No. Free SMTP plugins handle the connection, and many email services have a free tier that covers a small site. You only need a paid plan when your volume grows.

Are SPF, DKIM and DMARC required for a small site? The formal rules target senders of 5,000 or more emails a day. In practice, the same filters score all mail, so setting up all three is the best way to stay out of spam at any size.

How long does the fix take? Switching to SMTP takes about 15 minutes. Adding DNS records takes another 15, plus waiting time for the changes to spread, which can be up to 48 hours.

The bottom line

WordPress not sending emails is rarely a WordPress bug. It is nearly always an unauthenticated message sent from a server that inboxes do not trust. Test first, switch to SMTP, add SPF, DKIM and DMARC, then fix the From address in your forms. Do those in order and most sites are sorted in an afternoon.

A form that delivers is half the job. The other half is a page that makes people want to fill it in. Bright Addons gives you 20 free Elementor widgets to build those pages, with 60+ more in Pro from $19 a year and a 14-day refund. Browse the widget library, compare pricing, or read the docs to get started.