Help! WordPress Isn’t Sending Emails (How To Fix)

A common issue I have been coming across is WordPress not sending emails via contact forms, or even general administrative emails. If you are generating leads through your website or making online sales through a plug-in like WooCommerce, this can be a major problem.

In this article, I’m going to show you how to fix it easily and without costing you a penny.

Why is WordPress not sending emails?

WordPress uses a PHP mail() function to send an email, however, many hosting providers are not set up to use it correctly. This is the most common reason for emails not being sent from WordPress. Even if it is set up correctly, many mail providers like Gmail and Outlook have a spam function that blocks emails being received. So while it may be sent, your WordPress email may not arrive in your recipient’s inbox.

I always recommend for my clients to use an SMTP provider as they have significantly higher deliverability rates. Simple Mail Transfer Protocol (SMTP) is the industry standard for sending emails and many businesses already use these for email campaigns. Unlike PHP mail(), SMTP uses proper authentication which in turn ensures your email will be received.

In this article, we’re going to use Sendgrid as it’s super simple and FREE. There are other options, so if you already have one you will be able to use it.

Download an SMTP Plugin

First and foremost, you will need to download an SMTP plugin. I recommend Post SMTP as it is free and includes an email log, so you can double check if you are receiving WordPress emails – it’s also very easy to set up. Another free option is WP Mail SMTP but the email log is a premium feature.

Once you have downloaded your plug-in of choice, we need to move onto the next step.

Sign up for a free account at SendGrid & complete Sender Authentication

SendGrid is completely free to use unless you are sending thousands of emails every month. Go through the signup process and authenticate a sender and your domain. To find this, go to Settings > Sender Authentication. For email authentication, you simply need to click the link in the email you receive. For domain authentication, you will need to add CNAME records which is done via your webhost. Many allow you to log in to your DNS Manager and do it yourself. I recommend you also authenticate your domain as this will improve deliverability.

Domain authentication shows email providers that SendGrid has permission to send emails on your behalf. This is vital to improving email deliverability plus your recipients will not see “via sendgrid.net” message on you emails. This isn’t too important if they’re only coming to you, but it’s better to do this anyway to avoid any pitfalls later.

If you get stuck, you can read the documentation here.

Create a Sendgrid API Key

Next step is to create a Sendgrid API key. You will find this under Settings > API Keys. Name your API key “Your Domain API” for housekeeping, and then copy it into a note as you will only be able to view this once.

Follow the Post SMTP Wizard

The next part is simply following the setup wizard by Post SMTP. Either on the left hand side of WordPress, or your list of plugins – find the Post SMTP plug-in and click settings.

Fill in your sender details, this would be the name you would want it to be sent from as well as the authenticated single sender. If you try to send from an unverified sender, it will not work. However, you will be able to view the emails in your email log.

Next is your outgoing server mail hostname. This is specific to your email address so if you’re not sure, contact your email service provider.

Post SMTP will then conduct a connectivity test, click Sendgrid and paste the API key from your notes.

Finally, Post SMTP will ask if you would like a notification for emails not being sent from WordPress via a Google Chrome extension. I find this to be very useful, so I recommend downloading the extension.

You’re done! Emails will now send from WordPress!

And that’s it! Your emails will now send from WordPress. Send yourself a quick tester email via your contact form to double check, but if PHP mail() function was your issue – you will receive emails! If it hasn’t come through, don’t forget to check your junk email and if it is in there, mark it as “not junk”.

Not receiving emails from your WordPress website can be incredibly frustrating, but with a simple plugin and free SMTP provider – your woes will be gone!