How to Fix WordPress Email/Contact Form

After completing this tutorial, you should be able to send and receive email with the email address created in cPanel.

Here is how I got my contact form in WordPress to finally start sending emails. It took a pretty long time to figure out. I hope it helps out someone else!

As an important side note, NameCheap was my host, and I used cPanel inside of the NameCheap reseller account. This may or may not work if you are using GoDaddy or any other host, but it’s worth a shot!

Step 1: Create MX Entry

Domain Hosting Email MX Record

 

Go to cPanel > MX Entry (under Email) and make sure that there is an MX Entry with the following settings:

Destination: mail.your-website.com
Priority: 10

If there is no MX Record already there, create one (green box area).

Also, make sure that the Email routing is set to Local Mail Exchanger (see picture below).

Step 2: Create Email in cPanel

cPanel Email Accounts

Next, go to cPanel > Email Accounts and create an email account with the following settings.
Email: mail@your-website.com
Password: randompassword

Note that you will need to enter the password into the WordPress plugin that we will install in the next step.

Step 3: Configure Namecheap Domain MX Record

This step is only necessary if you want to receive mail with your new email address.

Login to Namecheap and navigate to your domain list: https://ap.www.namecheap.com/Domains/DomainList

Click Manage next to your-website.com and make sure that the Nameservers are set to Namecheap Basic DNS.

Next, click the Advanced DNS tab. The important parts in the picture are surrounded in a green box.

Make sure to set the Mail Settings to Custom MX, and add an MX Record where the Host = @, Value = mail.your-website.com, Priority = 10. If that looks familiar to you, it should. That’s the same MX Record you set in cPanel.

Namecheap Advanced DNS Hosting Email MX Records

Step 4: Install the WP SMTP WordPress Plugin

Easy WP SMTP WordPress Plugin

Next, install Easy WP SMTP and add the following settings:
From Email Address: mail@your-website.com
From Name: Any Name You Want
SMTP Host: localhost
Type of Encryption: TLS
SMTP Port: 587
SMTP Authentication: Yes
SMTP username: mail@your-website.com
SMTP password: randompassword (same as the password for the email account that was created in cPanel)

That’s it! Your WordPress contact forms should be working, now! As another quick side note, I did not notice the domain registrar’s settings having an effect on whether this worked or not. I hope it worked for you!