It’s possible other people have faced this Bluehost WordPress SMTP problem. I don’t currently host with Bluehost, but I’ve had a client who is and I faced problems that seem specific to Bluehost. It seems the problem only showed itself when the MX Record was set for Gmail to handle the emails (a popular option as I prefer Gmail myself compared to the usual Cpanel options of Horde etc.).
Essentially, the problem is the email from the contact form doesn’t appear to be sent, despite the contact form displaying a message that the email was sent correctly.
To confirm, I used the popular WordPress plugin Contact Form 7, along with WP-Mail-SMTP. My client also installed the Flamingo plugin which showed the messages that were entered into the contact form and seemed to be accepted. (suggesting that the contact form itself wasn’t the problem).
I tried a lot of different things to try and fix the problem. First, I tried the settings on the Contact Form. Then, I tried setting up plugins such as Gmail SMTP to route the contact form messages to the Gmail account my client had set up.
None of these seemed to work.
Bluehost support’s suggestion was to try a different plugin and to contact Google and the makers of the plugins I was using to resolve the issue.
Then, I found this great post from aldrinmercado.com which actually resolved the problem. He quotes a link to WP Beginner who had a relatively similar post about getting SMTP mails to work for contact forms (you can find that here) I’d been to that post by WP Beginner myself, but hadn’t been able to resolve the problem).
This is a pretty specific problem and so I’m not sure how many other people have faced this issue. However, the fix I found on aldrinmercado.com resolved the problem (and it turned out to be some settings in the MX Record on the Bluehost cPanel…).
I thought I’d write a quick account of my experience fixing this issue and following the steps first set out by Aldrin on his website in case they’re of any use to anyone.
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 Change button just below the options (that’ll save the setting).
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.
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.
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.
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.