If you do not receive the email at all, or only some of the time, it usually means your host is blocking the email as a spam prevention measure or they are being caught by spam or junk filters. There are a few things you can try to get it working.
Solution #1 – set a “From” address
Some hosts will block emails that have a “From” address that is not associated with the hosting account (as a spam prevention measure). To fix this, in the process.php file configure the $config['from']
option to an email address that is associated with the hosting account. It’s even more likely to work if this email address is an existing mailbox, and the email domain is the same as the domain of the website containing the form. For example, for the Notification email the option is:
1 | $config['from'] = 'info@yourdomain.com'; |
$config['from'] = 'info@yourdomain.com';
For the Autoreply email the option is:
1 | $config['autoreplyFrom'] = 'info@yourdomain.com'; |
$config['autoreplyFrom'] = 'info@yourdomain.com';
Solution #2 – try a different recipient email address
Try a different recipient email address in case there is an issue delivering to only the current email address.
If you have more than one recipient email address, try setting up the form to send to a single recipient to see if it works in that case. Some hosts may block emails with 2 or more recipients.
Solution #3 – check Junk/Spam folders
Sometimes the email may be wrongly flagged as spam. Check the Junk/Spam folder on the email account to see if the message arrived in there. If the email consistently arrives in the Junk folder, you can add the configured “From” address to your Contacts, or set up a Filter in your email software to always send the email to your inbox based on the “From” address or Subject.
Solution #4 – use an SMTP server to send email
Using an SMTP server to send email is usually more reliable than using the PHP mail() function. See the page Sending emails via an SMTP server for how to set this up and suggestions for free and premium reliable SMTP servers.
Solution #5 – use the mail-check.php file to test email sending
Quform uses the PHP mail()
function (via the PHPMailer library) to send the email by default. Some web hosts may not allow you to use this function or require that you set certain headers. So we need to find out if you can send a simple email using your web server. We have created a test script for this, which is located at quform/mail-check.php
. To set up the script open the file in a text editor and read the introductory comment then follow the instructions given.
If the script indicates there is a problem with the mail()
function on your server then you can try and set up the form to send the email via a SMTP server instead, such as your ISP’s server. See the page Sending emails via an SMTP server.
Solution #6 – set local MX records
This only applies if the domain of the site has MX records that are different from the domain itself, in other words the email for the domain is handled by a different server than the web server. For example the site uses Google Apps emails and has an MX record ASPMX.L.GOOGLE.COM. When the mail server tries to deliver the email it detects that the domain is on the same server and tries to deliver locally so it will never arrive at Google. The solution is to set a local MX record (not DNS) to tell the mail server to deliver the email externally. The problem is described in more detail on Google’s help page. You should probably contact your host and ask them to set it up. There is a Bluehost specific help page here which may also apply to other hosts using cPanel.