WordPress email delivery problems are very common. It is a real headache especially when you start a new blog with zero experience.
Even I've faced this issue when my WordPress site was not sending the user registration email. It was so annoying!
Not only that, a lot of our users have reported that their contact form built using Contact Form 7 is not sending emails.
Worse of all, when you want to reset your WordPress password urgently but WordPress will not send the password reset email.
Today, in this article, I'll help you out in fixing WordPress not sending emails issue.
Why is WordPress not sending emails?
But how and why?
WordPress or any other CMS built on PHP uses the PHP mail() function that is provided by your hosting server. In some cases, your web host doesn't set up or properly configure this function.
Email service providers like Gmail and Yahoo use a variety of tools to reduce spam. So, they ask for some information from your server's email client to ensure smooth email delivery.
Even if your web host allows the use of mail function, they normally lack to provide all the information like where and when the email is originated to the email service providers.
Hence, your WordPress emails either don't deliver or end up in the junk folder.
How to fix this?
Use SMTP with your WordPress site to send emails. Let's see how we can do that using WP Mail SMTP and Amazon SES.
Now you must be wondering what both of these terms mean. Let's understand them one by one.
What is WP Mail SMTP?
This plugin resolves almost every kind of email delivery problem in your WordPress site. It overrides the default configuration of the wp_mail() function to fix its shortcomings.
It either sets up a proper SMTP host configuration in the mail function or improves the existing SMTP mail provider.
It provides integration possibilities with various SMTP mail providers. In our case, we'll be using Amazon SES.
What is Amazon SES?
Most of the SMTP providers that WP Mail SMTP integrates into your WordPress site come with some limits like you can send only a limited number of emails per day or per month even with the paid subscriptions. That means once you exhaust your limit, your site stops sending notifications.
In the case of Amazon SES (Simple Email Service), it is a lifetime free service that comes with the free tier of Amazon AWS (Amazon Web Services).
It is really cost-effective and reliable. Once you run out of your free monthly limit (that is already so huge), you can continue sending your emails for a minimal fee.
Get FLAT 50% OFF any WPForms plan: Get it today!
It is an Amazon product, so you can expect robust performance, flexibility, and high email deliverability.
Now that you know what and why we are using for this setup let's get started!
Set Up WordPress SMTP Using Amazon SES
Before we proceed, there are two things you need to keep in mind:
- To use Amazon SES with your WordPress site, you must have an SSL certificate installed.
- The method I discussed in this tutorial requires you to create an Amazon Web Services (AWS) free tier account that lasts for 12 months. Even though it is a free account, you’ll need to enter your billing address and credit card information during registration. No need to worry, you’ll only be charged when you exceed the limit of your free tier. You can learn more about the AWS free tier offer here.
- You need Pro or above subscription of WP Mail SMTP plugin for Amazon SES integration.
Once you make sure the above conditions are met, it is time to set up WordPress SMTP using Amazon SES.
Step #1. Create & Set up a Free Tier AWS Account
Skip this step if you already have an AWS account. But if you don’t, then signup for a free AWS account by clicking here.
As mentioned in the prerequisites, you will need to enter your billing address and credit card details. You won't be charged until you exhaust your free limits.
Once your signup is completed, you will need to fill in a region for your service so that it can be served through the nearest or exact server.
If the same region is not available as yours then fill in the nearest one.
Step #2. Create & Configure IAM User
The next step is to set up an IAM User. This step will provide you with the access keys you’ll need later.
First, open the AWS IAM Users page and sign in.
Once you’re signed in, click the Add user button. Then, set up the new user.
After that, check the Programmatic access box in the Access type.
After that, click on the Next: Permissions button to proceed.
Then, select Attach existing policies directly from the top row.
AmazonSESFullAccess in the search bar.
You'll only see one result, named “AmazonSESFullAccess”. Make sure you check the box next to this option so that this permission is added for the user.
When everything is done, click the Next: Tags button. Skip the next page entirely and click the Next: Review button.
On the review page, you’ll be shown all the details you've chosen for this user. Make sure everything is correct, then click the Create user button.
You will see a success message. You'll also see an Access Key ID and Secret Access Key for your IAM user.
It is better to keep this tab/window open for now. We’ll be using these keys in further steps.
Step #3. Switch to AWS Production Mode
Every new Amazon SES account works in Sandbox Mode by default. This restricts your account to send emails to email addresses that have been verified with Amazon SES.
To remove this limit, we'll need to switch from Sandbox Mode to Production Mode so that you can send emails to anyone.
Get FLAT 50% OFF on the best WordPress visual form builder: Get it today!
First, click here and create a request with AWS support. In the create case options, be sure that the Service limit increase box is selected.
Then it will ask you to fill a Case classification form.
Make sure you provide all the legit info because Amazon uses this form to prevent spammers from using their services.
I've shared all of the details you’ll need for this form below:
- Limit Type: SES Sending Limits
- Mail Type: Transactional
- Website URL: Your site’s home URL
- My email-sending complies with the AWS Service Terms and AUP: Yes
- I only send to recipients who have specifically requested my mail: Yes
- I have a process to handle bounces and complaints: Yes
- Region: Choose the same region as when you set up your AWS account (whichever is closest to where your site’s server is located).
- Limit: Desired Daily Sending Quota
- New limit value: Estimate the maximum number of emails you expect your site to send per day.
Then, you’ll need to fill out the Use case description.
In this field, fill out details about your site, its kind, and why you need to send out emails using Amazon SES.
Be sure to mention the type of emails that your site will send using their platform, i.e. confirmation emails, purchase receipts, newsletters, etc.
Try to be as descriptive as possible. Amazon has every right to reject your application. So make sure they have a good reason not to.
Once you’ve filled the form completely, click the Submit button.
AWS will review your case and let you know the result within one business day. Meanwhile, you can continue with the WP Mail SMTP setup in the next steps.
Step #4. Install and Setup WP Mail SMTP with Amazon SES
Install and activate WP Mail SMTP on your site.
Then, go to WP Mail SMTP » Settings.
At the top of the Settings page, you’ll see a From Email option. Enter any valid email address. For proper branding, I would recommend using a branded email address, i.e. firstname.lastname@example.org.
Check the box labeled Force From Email, and the same email address will be used site-wide.
Then, you can set a From Name. This name will be shown in the 'from section' of the emails sent.
You can even check the Force From Name option if you’d like to apply this setting site-wide.
Then, scroll down to the Mailer section and select Amazon SES.
Once you choose the Amazon SES mailer, a new section titled Amazon SES will appear.
Add the access keys you created and obtained from your AWS account earlier.
Once you’ve entered both of your keys, you can select the Region.
The region will already be pre-selected based on where your site’s hosting server is located. Make sure that this is correct and matches what you picked Amazon SES setup in the AWS console.
Finally, click Save Settings.
After the settings are saved, an additional Verified Emails setting will appear. You can add additional From Emails here.
Step #5. Send a Test Email
All the steps above helped you to setup Amazon SES with WP Mail SMTP. But it is essential to verify if your settings are working fine or not.
For that, we need to send a test email from any of the From Emails you have added.
To verify the configuration, go to Settings » WP Mail SMTP and open the Email Test tab.
Fill any email address where you want to receive the test email in the Send To field.
Leave the HTML switch to ON (default).
When you are done, click the Send Email button. After sending the email, you should see a success message like this one:
To verify, go to the inbox of the email address you used to receive the test email, and you should see the test email from WP Mail SMTP.
This tutorial is an all-around fix for every WordPress email delivery issue. Even it is a working fix for WooCommerce not sending emails problem.
The combined integration of WP Mail SMTP and Amazon SES creates a reliable WordPress email system. You will never need to worry about any WordPress mail delivery issue ever.
Now that your WordPress email notifications are working, you may want to check out our post on how to reduce form abandonment in WordPress.