Step 1 – Your MX Record settings:
Go to your Bluehost cPanel. Under the Email section, you’ll see a link for MX Entry. Click it. As Aldrin points out, it’ll take you to a page titled DNS Zone Editor.
I’d stay away from most of the settings on this page unless you know you need/want to change something specific.
The section you want here is MX (Mail Exchange). This is the setting that tells the world (i.e. incoming emails) what server is going to handle your emails (so, in this case, you probably already have Gmail set up to handle your emails for your site).
Click the More button (it’ll expand so you can see and change settings).
You’ll see three options – Automatically Detect Configuration, Local Mail Exchanger, and Remote Mail Exchanger.
In Aldrin Mercado’s post, he says it should be currently set on Automatically Detect Configuration. I found my client’s option was set on Local Mail Exchanger. This was despite the emails being handled by Gmail (and they were working as well – before doing this, I tried setting up an email address on cPanel and wasn’t able to log in to that mailbox. Bluehost confirmed that was because the server was set for all emails to be handled by Gmail – seems logical).
Just as Aldrin suggested in his post, you need to change this setting to Remote Mail Exchanger. Then click the Changebutton just below the options (that’ll save the setting).
Step 2 – Creating an email address through cPanel:
Go back to the main page for cPanel on Bluehost, and go down to the Email section again. This time, click on Email Manager.
The fact you’re facing this problem suggests you have your emails being dealt with by Gmail, so you probably don’t have any email addresses set up.
Click Create an email account and set up an email. Aldrin suggested making an email address that’s close to the email address you’re currently using in your Gmail. It doesn’t need to be similar, just make it logical – something like email@example.com – that way you’ll recognise the email address when the contact form emails come through.
Now that’s set up, keep the email manager page open.
Step 3 – WP-Mail-SMTP plugin:
Go back to your WordPress login, install and activate the plugin WP-Mail-SMTP.
Go to the settings menu for the plugin (it has its own settings menu inside the mail WordPress settings menu. Just hover over the Settings link on the left side, and you’ll see the WP-Mail-SMTP link to the menu.
I’ll only mention the options you have to change/enter.
Input the new email address you created in the email manager (firstname.lastname@example.org, or whatever you happened to choose).
I don’t think this makes any difference to the end result, but put something logical here. I put ContactForm as the name, again so I’d recognise the emails when they started coming through.
The radio button for Send all WordPress emails via SMTP should already be selected – if it isn’t (and it’s on the PHP Mail()option) change it to Send all WordPress emails via SMTP.
Save your changes – I’m cautious like that.
You need to enter box???.bluehost.com (where the ??? is a 3 digit number, essentially the server that Bluehost actually stores your website/emails/information etc.). I found the easiest way to get this information is to try logging in to the email@example.com email address we set up in the cPanel email manager a couple of steps ago (or whatever the email address is that you set up in the email manager).
To do this, go back to the email manager in cPanel (see the previous step if you’ve forgotten how to get there and have closed the page).
You’ll be taken to the webmail login page for Bluehost. Use the login details you set up for this email address. You shouldn’t actually be able to log into this email address (at least I wasn’t able to). However, when you try to log into the email address, the status bar at the bottom of your browser should say something like “waiting for box236.bluehost.com…”. That is the 3 digit number you need (please note, that’s not actually the number for my client’s Bluehost server).
Enter what yours says into the SMTP Host box on the WP-Mail-SMTP settings page.
Update January 2019: A few people have mentioned, very helpfully, that you can find “box???.bluehost.com” information in the CPanel/Bluehost Email Configuration section (where you’d go to find information on setting up your preferred email client such as Outlook or Thunderbird).
I set this to 465 (yours may already be on this). This setting is to do with the encryption type you select in the next option.
Set this to SSL (which is why you need to set the port to 465 above).
Set this to “Yes: Use SMTP Authentication”. You’ll need to enter the email address you created (your version of firstname.lastname@example.org) and the password to access it.
Click Save Changes.
Step 4 – The Contact Form 7 settings:
This is specific to Contact Form 7 as that’s what I was using, but if you’re using a different plugin there should be some similar options so you should still be able to follow along.
Go into the settings for your contact form in the Contact Form 7 menu. You should be presented with 4 tabs (Form, Mail, Messages, Additional Settings). Click on Mail.
Here’s what you need to enter:
Put in the email address that’s handled by Gmail (presumably the main email address for your business. For example, my main email address for me is email@example.com). This should still be @yourwebsite.co.uk, it’s just that Gmail handles the emails for you…
Put in the email address you created in Step 2.
As with the other steps, put something logical in here, like ContactForm.
Now, I’ve read elsewhere that Bluehost reads contact forms slightly differently (I don’t know if this is the case or not, and I don’t know if all host servers do this or not; I haven’t had a chance to test it, so if anyone does know then please let me know). I’ve been informed you must put “From:”, “Subject:”, and then “Message Body:” like this, inside the Message Body box:
From: ContactForm <firstname.lastname@example.org>
Customer Name: [your-name]
Customer Email: [your-email]
Contact Number: [your-tel]
Once that’s complete, test your contact form! It should now send contact form emails to your Gmail address, from the email address you set up in the email manager in cPanel.
It took me a while to find Aldrin’s post. The steps that saved me seem to be the MX Record and setting up another email address in the email manager in cPanel.
As I said at the beginning, this is a very specific problem and it may be there are other ways around this. It may also be that there are some options (for example in Contact Form 7) that just aren’t necessary.
If anyone has anything to contribute to this, I’d be really grateful if you could leave some comments in the comment section.