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 problem and get your site's emails working again.
In this post, we'll quickly explain what's most likely going wrong with your site's emails. 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 sites (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 main reason WordPress users experience issues with their emails 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 emails from going out 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 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 host, you want your servers to be optimised 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 sending service. That way:
- Your WordPress site's server can focus on making WordPress load fast.
- Your email sending service can focus on reliably delivering your emails.
How to Fix WordPress Emails Not Sending
We'll share two methods to fix the problem:
- Using a dedicated sending service (we'll choose SendGrid).
- Using your host's SMTP server.
Method 1: Use a Dedicated Email Sending Service
For the best reliability, 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), you can find quality free options. 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):
- 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.
- 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:
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:
Then, add the details. This should be the email address that you want to be sending your emails from:
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:
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:
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:
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
Now, open 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 settings, enter the From Email and From Name that you want to use for your site. These should match your SendGrid Single Sender:
Then, find the Mailer section and choose SendGrid. Once you've done that, paste in the API key below and click Save Settings:
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's settings to send a test email:
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
If you want to remove the "Via SendGrid" text 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:
Choose your DNS host - pick Other Host if you're hosting at Krystal/Onyx:
On the next screen, enter your domain name that you want to send from (e.g. your WordPress site's domain name):
Now, you'll need to add three CNAME records via your DNS settings:
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:
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:
That's it! Now, you can send directly from the domain that you added.
Method 2: Use Your Host's SMTP Server
If your host offers a dedicated SMTP server, you can use that 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. If you're hosting elsewhere, you can ask your host's support about an SMTP 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 SMTP server using the same free WP Mail SMTP plugin as above:
To learn how to set this up at Krystal in more detail, you can follow our detailed help article.
Fix Your WordPress Email Issues Today
It can be frustrating to deal with WordPress emails not sending, 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 site's emails? 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.