Help! My Emails Are Not Being Received From My WordPress Website!

You may have come across this.  Your WordPress website is working fine.  It used to send emails and you use to get them.  But all of a sudden you notice that getting emails from your WordPress website’s contact form becomes less and less occurrence until one day you realized something frightening.  My WordPress website is sending me my emails!

 Here are some questions you should ask yourself.  Am I on a shared hosting environment?  For example, am I using GoDaddy, Hostgator, Bluehost, or any other big hosting provider?  You can tell if you are if you’re paying less than $10/month.  If you’re expecting an email when someone submits an inquiry from your contact form, is the contact form created using a third party plugin (e.g. Form Ninja, Contact Form 7, Gravity Forms)?  If you answered yes to anyone of these, you may be in trouble.

First off, I would suggest to moving away from using the contact forms built into your theme.  This is because you can’t extend it’s capabilities that you could if it the contact form was build using a popular third party form builder such as Contact Form 7.  So if you are using Contact Form 7, there’s another plugin called Contact Form 7 DB that you can install in conjunction.  What contact Form 7 DB does is that every-time a form (not exclusively to only contact forms) gets submitted, it also stores the submission in the database.  You can easily view or export the submission from within WordPress when needed.  It’s a good backup system in case there are email discrepancies.
There are several reasons why emails are not reaching their intended recipients.  Perhaps it could be in the recipient’s spam folder.  I suggest checking the spam folder.  Most email providers provide a way to filter incoming email and never mark it as spam.
If you are on a shared hosting environment, it is safe to assume the server that is hosting the website is also the one sending the email.  WordPress by default WordPress uses wp_mail() which is a proxy to PHP Mailer library which typically will just use the PHP mail() function by default.  The PHP mail() function uses PHP which is housed on your server and relies on the server to send the email and that lies the problem.  Shared hosting get’s its name from the fact that one server is shared among hundreds of websites own by various owners.  It is possible that someone who shares the same server as you have been abusing the email capabilities of the server. Email providers (Gmail, Yahoo Mail, Hotmail, etc..) have caught on to their shenanigans and auto-block the server’s IP because its sending too much spam email.  Consequently because your site is also on the same server sharing the same IP, your email gets black listed as well.
Relying on a shared hosting webserver to also send emails is not reliable.  It should work, and typically it does the majority of the time.  However, a webserver’s priority is to serve websites. Not send emails.  Also, hosting providers focuses on making sure the webservers are operating at 99% uptime and optimizing them to load websites fast.  Sending out emails reliably and timely is not their main priority nor their expertise.  It’s simply not in their core business model.  In terms of timeliness, I have on many occasions delays.  Some as much as a few hours.  When I call in, technical support mentions that sometimes the “pipes” get clogged up and emails tend to get stuck and will trickle out slowly.  Sometimes I can get them to reboot the server.  When they do that, I would sometimes get all the emails at once in bulk.  If its possible for emails to get “clogged,” I can see emails get completely lost when they are enqueue to be sent out.  You may also ask your hosting provider to move your website to another box.  I have done this once myself and it did resolve dropped emails issue.
My suggestion is that if email reliability is important then you should look into hooking up your website to a dedicated email server.  This is referred to a SMTP server.  An SMTP server takes care of the entire email delivery process.  The one I have experience with is SendGrid but this was on a custom PHP site.  However, SendGrid does have an official WordPress plugin that should make integration as easy as adding and activating the plugin.  I know some have hooked up their WordPress website to Gmail via SMTP, and I’m sure there’s a plugin for that too.  That can resolve the issue and for free without paying for premium service like SendGrid.
Not getting emails that you are expecting to get can be quite frustrating.  Lost emails can mean lost leads and opportunities!  So its important to have reliable systems and procedures in place to ensure you are getting emails.  I hope this article may provide you with some ideas and solutions that can help you!