WordPress sends mail with PHP's built-in mail function by default. It works, but the message often arrives with poor authentication and lands in spam, or is rejected outright – particularly when the site sends "from" a visitor's address.
The right fix: SMTP
Install an SMTP plugin and have WordPress send through a real mailbox, exactly as an email client would. Create a mailbox on your domain in cPanel – something like noreply@yourdomain – and give the plugin its details. Mail then comes from an authenticated address that your SPF record already covers.
Always send from your own domain
Contact form plugins often default to sending "from" whatever address the visitor typed. That fails authentication immediately, because our server is not permitted to send as somebody else's domain, and it is a frequent cause of contact forms silently not arriving.
Set the From address to your own, and put the visitor's address in Reply-To. You still just hit reply; the mail actually delivers.
Checking it works
Most SMTP plugins include a test. Send to an address on a different provider, not to another mailbox on the same domain – local delivery can succeed while external delivery fails.
If mail still does not arrive
- Check the spam folder before anything else
- Confirm SPF and DKIM are in place – see SPF, DKIM and DMARC explained
- Check the mailbox has not hit its quota
- Look at whether the site is sending in volume; bulk mail from shared hosting is a delivery problem in itself