Skip to main content
Krystal
Krystal Blog

How to Fix WordPress Emails Not Sending Problem for Free

Darren H

5 Feb 20217 min read • WordPress

Are you having a problem with your WordPress emails not sending?

Or perhaps your emails are sending but simply heading straight to the recipient’s spam folder (or even being blocked before reaching their inbox).

Thankfully, we have some reliable, non-technical and free solutions to fix the WordPress emails not sending problem and get your site's emails working again.

In this post, we'll quickly explain what's the most likely cause for your WordPress emails not sending, then, we'll take you through a step-by-step process of how to fix the problem and make your site's emails a lot more reliable.

The solution we’ll show you will be 100% free for most WordPress websites (you'll only need to pay if your site sends a lot of emails). This fix will work for all types of WordPress transactional emails with the following issues:

  • WordPress user registration emails not sending.
  • WordPress contact form not sending emails.
  • WooCommerce not sending emails.

Basically, if the emails come from your WordPress site, the following methods should fix the problem!

Let's dive in.

What Causes Problems With WordPress Emails Not Sending?

The most common reason users experience issues with their WordPress emails not sending has to do with the default way that WordPress sends emails.

By default, WordPress tries to send emails using your site's hosting server (using wp_mail(), which relies on PHP's built-in mail() function). The advantage of this approach is that there are no configuration steps to start sending emails from your WordPress site - it just starts working as soon as you install WordPress...well, it starts working in a perfect world.

There are a few problems with this approach, which is probably why you're reading this post.

First, some WordPress hosts will disable or limit PHP mail, which might stop your WordPress emails from sending in the first place.

Second, even if your emails are sending, people might not receive them because they get filtered or go straight to spam. The most common issue here is with authentication. Because email spam is such a huge issue, services (like Gmail) are much more likely to mark unauthenticated emails as spam.

Finally, there's also just a specialisation problem. Hosting a website and reliably sending emails are completely different functions. When you pick a WordPress hosting provider, you want your servers to be configured to load your WordPress site quickly and reliably. But that's a different type of optimisation than sending your emails reliably.

For that reason, it's a much better choice to pick a dedicated email provider. That way:

  1. Your WordPress site's server can focus on making WordPress load fast.
  2. Your email service can focus on reliably delivering your emails.

How to Fix WordPress Emails Not Sending

In this tutorial, we'll share two methods to fix the WordPress emails not sending problem:

  1. Using a dedicated sending service (we'll choose SendGrid).
  2. Using your host's SMTP server.

Method 1: Use a Dedicated Email Sending Service

For the best reliability and how to avoid problems with WordPress emails not sending, you can use a dedicated email sending service. These services are 100% focused on sending emails, which means they're very good at it.

Better yet, for low volumes of sending (up to 100-300 emails per day), there are plenty of high-quality free options available. Here are some good choices:

  • SendGrid - free for up to 100 emails per day.
  • Pepipost - free for up to 100 emails per day.
  • Sendinblue - free for up to 300 emails per day.
  • Mailjet - free for up to 200 emails per day.

We'll show you how to set up the SendGrid service because it's one of the most popular options, and the free plan should work for most sites.

There are two ways to authenticate your site to send emails with SendGrid (remember, authentication is what stops your emails getting blocked/sent to spam):

  1. Single Sender Authentication - this method is the easiest to get started with. However, your emails will show as being sent "Via SendGrid.com" (example below), which doesn't look as professional. If you're just sending emails to yourself (e.g. contact form submission notifications), you can use this method. But if you're sending emails to your users, you'll probably want to use the other option.
  2. Domain Authentication - your emails will look as if they're coming from your domain directly, and you'll also boost your email reputation which will further improve reliability. This is the best overall option, but the setup process is a bit more technical.

Here's what it will look like with Single Sender Authentication, so that you know what we're talking about:

James Bond

We'll show you how to set up Single Sender Authentication first, and then we'll cover Domain Authentication should you want to go that extra step for a more professional look and improved reputation.

1. Create a SendGrid Account

To get started, go to SendGrid and register for a free account.

The following steps require you to be logged in to your SendGrid account.

2. Add Single Sender Authentication

Inside your SendGrid account, go to Settings → Sender Authentication or click here.

Choose Get Started next to Single Sender Verification:

Sender Authentication

Then, add the details. This should be the email address that you want to be sending your emails from:

Create a sender

Then, SendGrid will send a verification email to that address. You'll need to click a link to verify your email address.

Now, you're ready to configure your WordPress site to send emails.

3. Generate a SendGrid API Key

Next, you need to generate a SendGrid API key, which is what you'll use to connect your WordPress site to SendGrid.

To do that, go to Settings → API Keys in your SendGrid dashboard or click here.

Then, click the button to Create API Key:

API Keys

Give it a name to help you remember it. Then, choose Restricted Access and give it Full Access to Mail Send. You can leave everything else as the defaults:

API Key Permission

To finish, click Create & View at the bottom of the screen. This will display your API key - keep this handy because you'll need it in the next step and SendGrid will only display it once:

API Key Created

If you accidentally close this screen - don’t worry! You can always just create a new API key.

4. Install the Free WP Mail SMTP Plugin

Next, we’ll need to configure our site to send emails using SMTP (Simple Mail Transfer Protocol). SMTP is a much more reliable protocol for sending emails, leading to a higher email deliverability rate and fewer email notifications to your users getting lost.

To do that, we’ll need an SMTP provider - and, as with so many other issues, we can solve this with a handy WordPress plugin! These all-in-one solutions take care of a lot of the tricky business of troubleshooting SMTP settings yourself, meaning you won’t end up needing to manually set up SMTP ports (TLS/SSL etc.) to make your web mail function correctly.

There are a few different SMTP services available, but in this instance we’ll be using WP Mail SMTP, so head on over to your WordPress dashboard and install the free WP Mail SMTP plugin from WordPress.org.

Once you've activated the plugin, go to WP Mail SMTP → Settings.

At the top of the email settings, enter the From Email and From Name that you want to use for your site. These should match your SendGrid Single Sender:

Mail

Then, find the Mailer section and choose SendGrid. Once you've done that, paste in the API key below and click Save Settings:

Mailer

5. Send a Test Email and Celebrate

You're pretty much finished! To make sure everything is working, go to the Email Test tab in the plugin settings to send a test email:

WP Mail SMTP

If it works, WordPress will now use the SendGrid service to send all of its transactional emails including:

  • User registration emails
  • Password reset or change emails
  • Contact form notifications/confirmations
  • WooCommerce store emails

How to Set Up Domain Authentication

Now that you have resolved the issue with WordPress emails not sending,, if you want to remove the "Via SendGrid" text for a more professional look and improve your email sending reputation, you need to set up Domain Authentication in SendGrid, which involves adding some DNS records to your domain name.

Finding where to manage these DNS records is a little bit technical. But the actual process of adding records just requires some copy and pasting.

To get started, click here and choose Get Started next to Domain Authentication:

Sender Authentication

Choose your DNS host - pick Other Host if you're hosting at Krystal/Onyx:

Authenticate Your Domain

On the next screen, enter your domain name that you want to send from (e.g. your WordPress site's domain name):

Sender Authentication Domain

Now, you'll need to add three CNAME records via your DNS settings:

Instruction

If you're hosting with Krystal, you can follow these instructions for cPanel domains or non-cPanel domains to manage DNS records.

Otherwise, you might need to use your domain registrar. Or, if you're using Cloudflare, you would need to add the records using Cloudflare's DNS manager.

Here's an example of what it might look like to add one of the three records:

DNS Management

Make sure to:

  • Choose CNAME for the record type.
  • Paste the host from the Host column.
  • Paste the value from the Value column.

Once you've added all three records, check the box and click Verify in your SendGrid dashboard.

You should then see a success message:

Verify

That's it! Now, you can send directly from the domain that you added.

Method 2: Use Your Host's SMTP Server

If your web host offers a dedicated SMTP server, you can use that to send WordPress admin emails instead of a dedicated sending service like SendGrid.

An SMTP server is basically a web server that's dedicated to sending emails instead of hosting websites (and separate from your WordPress site's server).

If you're hosting at Krystal, we offer a free SMTP server with our cPanel Web Hosting service that you can use to send your site's emails and avoid the WordPress emails not sending issue altogether. If you're hosting elsewhere, you can ask your host's support about their mail server (or consider making the switch to Krystal to access our free SMTP server).

Once you get the details for your SMTP server, you can configure WordPress to send emails via that email server using the same free WP Mail SMTP plugin as above:

Other SMTP

To learn how to set this up at Krystal in more detail, you can follow our detailed help article.

Fix Your WordPress Emails Not Sending Issues Today

It can be frustrating to deal with WordPress emails not sending issues, especially if you or your visitors aren't receiving important emails.

The fix is to configure WordPress to use a dedicated email sending service, which offers a much more reliable way to send user registration emails, password resets, form notifications and more.

One great option is to use the free SendGrid service, which we showed you how to set up in this post. It's free for up to 100 emails per day, which will work for most sites. Or, you can also use your host's SMTP server, if your host offers one (which we do here at Krystal).

Still have questions about how to fix problems with your WordPress emails not sending? Drop us a message in the comment section below or send us a Live Chat message and our expert team will look into it for you.

About the author

Darren H

I'm Darren and I'm the Senior Copywriter at Krystal. Words are what I do. Aside from writing, I play guitar and sing in my band Machineries Of Joy, work on getting my 2nd Dan in Taekwondo and seek adventure with my wife and daughter.