How to Fix WordPress Emails Not Sending Issue With SMTP
Having a problem with WordPress emails not sending? Because of the default way in which WordPress is configured to send email, it’s common to have problems with emails not sending and/or emails getting sent straight to spam folders.
Obviously, this can cause a lot of problems for your site. If you allow public registration, your site’s users won’t get important emails like password resets. And even if you’re the only user at your site, you might run into issues like a WordPress contact form email not sending.
Thankfully, there’s a fix, and it’s not that technical to implement. By using something called SMTP, you can change the way WordPress sends emails to use a much more reliable system.
In this post, I’ll explain the most likely reason why you’re having a problem with WordPress emails not sending and how SMTP can help. Then, I’ll show you exactly how to use SMTP to make your WordPress site deliver emails more reliably.
Why Are Your WordPress Emails Not Sending?
By default, WordPress uses the PHP mail() function to send emails. It does this because it’s super simple to implement and doesn’t require any special configuration to start working.
However, there are a couple of problems with using the PHP mail() function.
First, your WordPress site’s server might not be configured to use the PHP mail() function. If that’s the case, your WordPress site might just flat out not be able to send emails.
Second, even if PHP mail() is working, it has horrible deliverability because there’s no authentication.
See, you don’t need me to tell you that there’s a lot of email spam out there. To cut down on the spam that reaches your inbox, email clients like Gmail use a variety of filters, including checking that an email is actually coming from where it says it’s coming from (this is the authentication part).
With WordPress’ default email configuration, there’s no authentication, which is why a lot of email clients will either:
- Flat out reject emails from your WordPress site
- Send emails from your WordPress site to the spam folder
So in this second scenario, your WordPress emails technically are sending – they just aren’t making it to your inbox because email clients see the lack of authentication and think it’s spam.
SMTP Provides Authentication and More Reliable Delivery
SMTP, short for Simple Mail Transfer Protocol, is a protocol for transmitting and authenticating emails.
With SMTP, you can send your emails through a dedicated SMTP server rather than using your WordPress site’s server.
Because the SMTP server is 100% dedicated to sending emails, you get much better reliability and deliverability.
What’s more, unless you’re sending tens of thousands of emails per month, you can find reliable free SMTP servers, so it’s really a no-brainer.
How to Set Up WordPress SMTP to Fix Emails Not Sending Problem
Now that you know the theory, I’ll take you through how to set up WordPress SMTP to fix the WordPress emails not sending problem at your site.
Here’s the basic two-step process:
- Choose an SMTP service (I recommend SendGrid)
- Use a WordPress SMTP plugin to configure your site to send via that service
You won’t need any special technical knowledge to follow this tutorial and you can perform all the steps without needing to use any custom code.
1. Choose Your SMTP Service
First off, it’s important to note that some WordPress hosts offer their own SMTP servers.
For example, if you’re hosting at SiteGround, WPLift’s recommend WordPress host, SiteGround offers free SMTP access included with your hosting. On the other hand, many managed WordPress hosts don’t include SMTP. For example, neither Kinsta nor Flywheel offer their own SMTP servers.
Either way, I’m going to recommend a specific solution here – SendGrid.
SendGrid is a service that’s 100% dedicated to sending emails.
If you want to fix the WordPress emails not sending issue, going with a service that’s entirely focused on email deliverability is a good choice. Makes sense, right?
More importantly, though, SendGrid is 100% free for sending up to 100 emails per day.
Most WordPress sites will be well under that limit, which means that SendGrid is a 100% free solution to fixing the WordPress not sending email problem.
SendGrid also lets you connect via API, rather than manually entering SMTP server details.
To get started, visit SendGrid and sign up for a free account.
Mailgun is another good option with higher free sending limits, but I prefer the SendGrid interface and find its setup process easier.
2. Generate a SendGrid API Key
To connect SendGrid to your WordPress website, you need to generate a SendGrid API Key.
To do this, go to Settings → API Keys in the SendGrid sidebar. Then, click Create API Key:
Then, give it a name to help you remember it, select Full Access, and click Create & View:
This will open a new screen that shows your API key. Do not close this screen as SendGrid will not show you this again.
Leave this screen open for use in the next step and then open your WordPress dashboard in a new tab:
3. Configure WordPress SMTP Plugin
To tell your WordPress site to use the SendGrid service rather than the default PHP mail approach, you can use a free WordPress plugin.
While there are lots of platform-agnostic WordPress SMTP plugins, SendGrid has a dedicated plugin, so that’s what we’ll use.
If you prefer to use a different service, I think the Post SMTP plugin is the best free platform-agnostic WordPress SMTP plugin. It’s a reincarnation of the previously-popular Postman SMTP plugin.
Once you install and activate the official SendGrid plugin, go to Settings → SendGrid in your WordPress dashboard.
In the SendGrid Credentials section:
- Paste your API key into the API Key box
- Make sure the Send Mail with drop-down is set to API (the default)
Below that, use the Mail settings options to:
- Enter the Name that will appear to people as the sending name
- Enter the Sending Address which will appear to people as the from email
You can also check out the other settings, but you don’t need to configure anything else.
And that’s it! Your emails should be working.
4. Test Emails
The official SendGrid plugin includes a feature to help you send a test email to verify deliverability.
To use it, go to Settings → SendGrid and then scroll all the way to the bottom.
Enter some dummy data and click Send:
And if all goes well, you should see that email show up in your inbox:
Any Questions About WordPress Emails Not Sending?
That wraps up our guide on how to fix the WordPress emails not sending issue.
After you’ve set up SendGrid, you shouldn’t experience any more deliverability issues.
And again, SendGrid is free for up to 100 emails per day, so most WordPress sites will be able to benefit from improved email deliverability without spending a cent.
Do you have any questions about how to fix WordPress not sending email problem? Ask away in the comments and we’ll try to help.