One of the single most frustrating things I’ve dealt with is the variations of things that can cause contact form submissions not to be received. The most common reason is that they are labeled as spam, but are still received. On rare occasions, contact form submissions are not received at all. In Office 365 email setups, this seems always to be the case. Unfortunately, by default, GoDaddy uses Office 365, so you may be here wondering how to tackle this issue.
Troubleshooting
The first step to troubleshooting contact forms is to ensure that they’re sending to begin with. First, try sending an email through the contact form. If it throws an error and no “thank you” confirmation message, the problem instead may be that your reCAPTCHA is bad or invalid, or your mail-to settings are erroneous. If it successfully sends, the next troubleshooting step will be to determine who the form will actually send to. Try sending the form submissions to a Gmail account, or a different free provider if you have one on hand. If the form doesn’t send, try a different “from” address in the header. If it does send, then the problem is with the receiving service.
Bypassing Office 365’s Spam Filters
I’ve tried just about everything to bypass Office 365’s spam filters, and the solution for me was surprisingly simple. After bashing my head against a wall over months trying to change the SPF records, and modifying the from information to match the server (so Office 365 doesn’t think we’re spoofing), I came into a winning combination.
Change the content type to HTML
The first step is to change the email type to HTML. You do not need to actually add any HTML tags to the email you are receiving, but for some reason, Office 365 is more apt to let through an email that is HTML.
If this works for you, congrats! You cracked the code. Unfortunately I had to go a step further.
Install WP Mail SMTP Plugin
I figured the problem was that Office 365 didn’t like the PHP Mail type, or where it was coming from. A nifty plugin called WP Mail SMTP can enable your site to route through another mail service. Usually, a quick fix for this is to route through a Gmail account (since just about everyone has one). Unfortunately, the hosting we were using wasn’t allowing us to complete the connection with Gmail. This will likely work for you and be the solution, but you can also connect and route through another SMTP provider. We used the free email on the host and created a sub-domain specifically for this reason, so we ended up routing through an account called wordpress@cf.domain.com Surprisingly, this worked.
Hopefully this helps you to squash those annoying Contact Form 7 delivery bugs. We’re going to keep looking for solutions to keep this working without all the hoops, but for now, this will do.
PRO Version of the WP Mail SMTP plugin is now required for Outlook 365