When your WordPress website’s emails aren’t delivered and don’t reach their intended recipients, it couldn’t be worse for your business. It means customers aren’t receiving important emails from you, such as account and reset passwords emails.
If you run an online store, like a WooCommerce website, it means customers who’ve made a purchase from your store not getting a receipt.
Psst! If you’re after WooCommerce specific advice, check out our post “How to Fix Issues with WooCommerce Email not Sending.”
The problem is, email sending issues such as these can lead to a lack of trust between customers and your brand, not only frustrating you, but you’re frustrating your users and customers, too.
Unlike most other WordPress issues, “turning it off and back on again” won’t even begin to delve into the depths of where the real problem lies.
In this post, we’ll take a look at how to diagnose and resolve WordPress not sending email issues:
- What emails are sent by WordPress?
- How are WordPress emails sent by default?
- Common email sending issues
- How to determine the root cause
- The right way to send emails from WordPress
By the end of the post, you’ll be able to fix the “WordPress not sending email issue” once and for all.
What kind of emails does WordPress send?
Before we go into diagnosing WordPress not sending email issues, you first need to understand what kinds of emails WordPress sends from your site, which can vary depending on the plugins you use. For example, WooCommerce creates its own transactional emails for orders, new accounts, refunds, and more.
Here are the main emails that a typically WordPress site might send:
- Password reset emails. The email a user receives when they request a new password.
- New user email. An email that is sent to the site admin notifying them of new user registrations.
- Activate account. The email sent when a user signs up for an account and needs to verify their email.
- WooCommerce emails. A range of various emails from new order notifications, order update emails (order received, shipped, etc) and many others.
- Newsletter emails. If you use a newsletter plugin and opt to send via your host, your email newsletters could be affected by WordPress email sending issues.
- Contact form emails. This could be the entire submission, like if you use Contact Form 7 or choose to receive a notification of a new contact form submission. Either way, you want these emails to be delivered.
How does WordPress send emails?
Now that you understand the types of emails WordPress sends, it’s important to know exactly how it sends emails. And if you’re experiencing WordPress email sending issues, you want to know why your emails aren’t being delivered.
Sending with wp_mail
WordPress uses a function called wp_mail to send emails via PHP. If you aren’t a developer, there is a good chance you won’t have heard about wp_mail before. Yet, it’s vital to the sending flow in WordPress, and how, by default, WordPress handles all email.
The wp_mail function is used by 24 other functions within WordPress, including sending out critical emails such as password resets amongst others.
In essence, wp_mail is a wrapper of the PHPmailer class and uses your host’s webserver to send mail in the same way as PHP mail does.
The lifecycle of an email sent from WordPress
Let’s take a look at the entire mail flow and all the points of success (or failure!):
- A plugin or WordPress core uses wp_mail to attempt to send an email.
- Your host’s server receives the request and tries to use PHP mail to process the email to be sent.
- The host then uses Postfix or SendMail to route and deliver the email. Postfix and SendMail are email routers that are used to route outgoing and incoming emails to their correct destination.
- The email is then accepted or rejected by the receiving host.
- Finally, the email is filtered. It’s during this last step where the email could be filtered to the spam box, the inbox, or a different location, like Gmail’s promotions tab.
As you can see, there’s a lot going on, and this is without getting into the technicalities of how each specific service works.
Common WordPress not sending email issues
Like most issues with software, there are common threads that you can check before the hard work starts, including:
- PHP Mail. Perhaps your server has been sending too many emails, or the mail function just isn’t available on your hosting. Either way, verifying PHP Mail is enabled and working is the quickest way to rule out any WordPress email sending issues with your server.
- Bad server reputation. Overall, this is a less common issue but noteworthy if you use shared hosting as everyone on the same server will use the same set of mailing IPs to send email. All it takes is a few bad neighbors to purposefully send spam emails in bulk for the server to end up being blacklisted, resulting in your emails not be delivered.
How to determine the root cause of WordPress not sending email
Email sending is made up of a lot of different components as you’ve read so far, which can make diagnosing WordPress email sending issues tricky. How exactly do you determine the root cause? Just follow this simple four-step process.
Step 1: Reset your password
Resetting your password is the quickest way to see if your WordPress install can send emails.
Don’t forget to check your spam folder!
If it can receive this password reset but you aren’t receiving specific emails such as WooCommerce invoices, read further.
Step 2: Verify that PHP Mail is enabled
If password reset emails aren’t working, it’s indicative that PHP Mail might not be actually working on your site.
To check if PHP email is enabled, install the fantastic free WordPress plugin Check Email.
Install it and then in the WordPress admin go to Tools > Check Email.
You’ll see the SendMail or PostFix path depending on what your site uses and a few other settings. All you have to do is enter in an email address and then click “Send test email.”
You may think, great! My email is working now! Well, it might not be yet. All the above does is verify that PHP Mail works on your host — it doesn’t guarantee PHP Mail hasn’t been dropped along the rest of the way.
To make sure your email is actually working, check the email account you sent the test email to and you should see it there. Don’t worry for now if you find the email in the spam folder.
Step 3: Host-Related WordPress email not sending issues
You’ve verified that PHP Mail works (or perhaps doesn’t work) and emails still aren’t being received. It’s frustrating and can only mean one thing — it’s time to think about your hosting.
Keep in mind, web hosts have a range of email sending limits and this varies host to host. Low sending limits and a busy site could see your email sending capabilities suspended by your host through order invoices or password reset emails alone.
We suggested you install a plugin that logs all the emails sent from your WordPress, so you can have proof that you are indeed sending emails from your website.
How can you check this? The quickest and easiest way is to jump on to a live chat with your host and ask them if you are currently blocked from sending email or if they have any WordPress email sending issues themselves. If your host says there are no issues, you need to continue digging…
Step 4: Spam and blacklist checks
Did you check your own spam folder earlier? Do that first just to be sure.
If your website’s emails are going to spam, be sure to check WordPress Emails Going to Spam? Here Are 13 Ways to Improve Newsletter Delivery
The final step in diagnosing email deliverability issues is the dreaded spam check. If you send from a shared IP address, it could be that your emails are ending up blocked because the IP is blacklisted due to other senders on your server using it for nefarious purposes.
To check, send a test email via Mail-tester and check the results. Mail-tester will provide you with a range of information, including if you are on a blacklist.
Go to Mail-tester and you’ll see an email address to send your email to:
Copy that email address and then go ahead and send a test email via your website. You can do this using the Check Mail plugin I mentioned earlier.
Now, head back to the WordPress admin and go to Tools > Check Email, paste the email and press send email.
Head back to the mail-tester.com site and click then check your score. It will load for 15 seconds and as long as the email is received you’ll get a result like this:
Yikes! Not good. A 0/10 means your emails may never hit the users inboxes and you’ve got some serious email deliverability issues that need fixing.
It’s important to note that Mail-Tester’s score is just an indicator. We know because we built the tool ourselves.
What to look for in Mail-Tester:
- SPF or DKIM issues: while these signatures are great, they’re not mandatory. But pay attention to any errors thrown by Mail-Tester because that would clearly mean your emails won’t get delivered.
- Blacklists: not all blacklists are created equal. Some of them are critical, like SpamHaus and Spamcop, because they’re used by email providers. Note that Mail-Tester doesn’t include many widely used commercial lists, like Cloudmark.
- Your FROM address is a Gmail, Yahoo, or another free mailbox: Emails sent using a free email address are far more likely to hit the spam box. Solution: send from an address like email@example.com
Now, let’s take a look at how to solve WordPress email not sending issues and get your emails sending again.
The right way to send email: use a dedicated email solution
Rather than relying on your host to send emails, and then putting up with deliverability issues harming your business and customer trust, we recommend using a dedicated email sending solution.
This is also what we recommend in our definitive guide to newsletters in WordPress.
Why? A dedicated email sending solution will prevent the common pitfalls that come with using PHP Mail, host email limits or blocking issues, along with most spam issues. Using a dedicated solution will instantly eliminate the majority of email sending and receiving issues.
So let’s take a look at some of your options for resolving WordPress email sending issues.
1. Using SMTP to send your WordPress emails
SMTP (Simple Mail Transfer Protocol) is an industry-standard way to send emails that use the proper authentication method to ensure email deliverability. SMTP plugins can help you can with sending WordPress emails. Free plugins such as Easy WP SMTP can help you configure and send all your outgoing WordPress emails via an SMTP server, not PHP Mail.
So what’s the difference? A few things:
- Configurable from name and email address. SMTP allows you to be more recognized by your customers and users, preventing you from ending up in the spam folder. This part solves the issue I mentioned earlier about sending an email from an address that’s different from the server it belongs to.
- Route emails via SMTP completely bypassing PHP Mail.
- Use any SMTP provider including popular services, such as Mandrill.
Apart from being more reliable than the standard PHP Mail method, SMTP is relatively straightforward to set up. All you need to do is pick an SMTP provider and then copy and paste the details. Before you know it, emails will be making their way via the internet from your WordPress site and landing in inboxes rather than getting misplaced or lost.
2. Using Amazon to send your WordPress email
With Amazon, you can order anything you need for next day delivery and even stream the latest blockbusters. But did you know Amazon can do your email, too? Pretty neat, right?
Here’s how it works: First, you’ll need an Amazon account, if you haven’t got one already, and then you’ll need to install the WP SES plugin. This plugin was built by the folks at Delicious Brains, who make other popular plugins such as WP Migrate DB.
Finally, you’ll need an Amazon Simple Email Service plan.
The WP SES plugin completely replaces the internal wp_mail function, providing a reliable alternative that can help you resolve WordPress email sending issues. There is one slight pitfall, however — some plugins that rely on and use wp_mail don’t currently have full compatibility with WP SES.
If you aren’t sure whether to go with Amazon SES or SMTP, let me reassure you that both methods are a significant improvement on the standard PHP Mail method. However, I recommend using SMTP if you’re a beginner or already use it for other services. If you’re a developer or don’t mind reading some documentation, you can’t go wrong with Amazon SES.
2020 update: MailPoet can now handle the sending of your WordPress emails! Find out more.
Diagnosing WordPress email not sending issues in WordPress is one of the trickiest issues you might come across with your email newsletters. Whether you’re a seasoned professional or an email beginner, it’s never easy getting to the root of WordPress email sending issues.
With the advent of alternative email sending solutions, such as SMTP and Amazon SES, the headbanging annoyance of emails not sending can finally be all but a distant memory. Plus coming in 2019, the MailPoet Sending Service will handle all of your WordPress emails. Stay tuned for more news on that front! Update: it’s here!
Have you had WordPress email nightmares? Perhaps you’ve found an alternative solution that works well and want to share? Leave a comment below and let us know!