A contact form that doesn’t send email is a common problem with WordPress websites. Usually it’s not the form itself that’s at fault, but the way your server sends email. WordPress uses the PHP mail() function by default, which is often flagged as spam or doesn’t arrive at all. The solution usually lies in setting up SMTP and checking your email authentication.
Why the mail doesn’t arrive
Most contact forms, such as Contact Form 7 or WPForms, send email via the server’s built-in PHP mail() function. This works technically, but many spam filters distrust this method because the sender isn’t properly verified. As a result, the mail ends up in the spam folder, or is rejected entirely by the receiving mail server.
Other common causes include: an incorrectly configured sender address (for example, an address that doesn’t belong to your domain), a misconfigured plugin, or a hosting environment where mail() is disabled entirely.
From form to inbox via SMTP instead of mail()
Setting up SMTP in WordPress
The most reliable solution is sending form mail via SMTP with a real email account, instead of via mail(). To do this, install an SMTP plugin, for example WP Mail SMTP.
Create an email account
Create an email address in Plesk that you use specifically for sending, for example [email protected].
Install an SMTP plugin
Install a plugin such as WP Mail SMTP and choose ‘Other SMTP’ or the option that matches your mail server.
Enter the SMTP details
Enter the email address, password, SMTP server (e.g. mail.yourdomain.com), port, and encryption. You can find these details when setting up your email account.
Send a test email
Most SMTP plugins have a built-in test function. Send a test email and check whether it arrives, including in the spam folder.
Testing and checking the form
Still not working after setting up SMTP? Check the following points:
- Verify that the sender address in the plugin settings exactly matches the email address you created.
- Check the spam folder of the receiving address, not just the inbox.
- Check whether your contact form plugin (such as Contact Form 7) itself still sets its own ‘From’ address that differs from your domain.
- Test with a different receiving email address, for example on another domain, to rule out that the problem lies with one specific mailbox.
You can also test your business email separately from WordPress using a regular email client, to see whether the problem lies with the form or with the mail server itself. You can read more about this at setting up business email.
Checking SPF, DKIM and DMARC
If your mail is being sent but ends up in spam, this is often due to missing or incorrect email authentication. SPF, DKIM, and DMARC are DNS records that tell receiving mail servers that your server is authorized to send mail on behalf of your domain.
Check via Plesk whether these records are set up correctly for your domain. If they’re missing, there’s a good chance form mail will be seen as untrustworthy. You can find more explanation and instructions on this in the knowledge base article on email ending up in spam.
Do you manage your domain and DNS settings somewhere other than your hosting package? Then you’ll need to adjust the records there. You can check how to arrange this via managing domain names.
Frequently asked questions
Why doesn’t mail() work on my server?
Many hosting environments restrict or disable the PHP mail() function due to the risk of abuse, or the mail is sent but immediately marked as spam because there’s no authentication behind it.
Do I need to create a separate email address for each form?
No, one created email address that you use specifically for sending via SMTP is sufficient for all forms on the same website.
Can I test whether my mail is arriving properly?
Yes, send a test email to an external address and check both the inbox and the spam folder. Many SMTP plugins also have a built-in test function.
Does switching hosts help?
If your hosting environment structurally blocks or poorly supports email sending, switching to a host with good email support can solve the problem. Check out switching to Tandata for this.
Conclusion
A contact form that doesn’t send email is usually caused by WordPress sending via the unreliable mail() function. Set up SMTP with a real email address, check your sender address, and make sure SPF, DKIM, and DMARC are configured correctly. That way, form mail will reliably arrive again.