What it means when WordPress is not sending emails
WordPress sends application email through wp_mail(). By default, that depends on the mail facilities available to PHP and the server, unless a plugin or service routes mail through authenticated SMTP or an email API.
The key distinction is whether WordPress failed to hand the message to its mail transport, or whether the transport accepted it and the message was later rejected, delayed or filtered. WordPress documentation notes that a successful wp_mail() result does not prove the message reached the recipient.
If some messages arrive but contact form messages do not, check the form configuration and sender address. If no WordPress email arrives, check the site-wide mail transport and hosting environment first.
Common causes of WordPress emails going to spam or disappearing
A common failure is unauthenticated or poorly aligned outgoing mail. A site may send with a From address that does not belong to its own domain, while SPF, DKIM or DMARC records are missing or incorrect. Receiving systems can then treat the message as suspicious even though WordPress reports no error.
- Server mail is disabled or restricted. Some hosts limit PHP mail or require an authenticated mail service.
- The sender is wrong. A form may use the visitor's email address in From instead of using an address on your website domain and putting the visitor address in Reply-To.
- SMTP or API credentials have changed. Passwords, API keys, ports or encryption settings can become invalid.
- The recipient filters the message. Check spam, quarantine rules and forwarding.
- DNS authentication is incomplete. SPF, DKIM and DMARC must describe the systems that actually send mail for the domain.
Do not add a second SPF record as a quick fix. Authorised senders should be combined correctly within one SPF policy.
How to fix WordPress email safely
Work from the least invasive checks to the more technical ones. Before editing site files, plugin configuration or the database, take a full backup of both files and database.
- Test more than one email type. Try a password reset and, if relevant, a form notification. Note which messages fail and which recipient domains are affected.
- Check the sender and recipient settings. Use a From address on your own domain. For contact forms, keep the visitor's address in Reply-To rather than pretending the message originated from their domain.
- Check the mail transport. If the site relies on PHP mail and delivery is unreliable, configure a reputable, maintained SMTP or email API integration with credentials supplied by your mail provider. If one is already configured, recheck the host, port, encryption method and credentials.
- Check SPF, DKIM and DMARC. Compare the DNS records with the instructions from the service that sends your mail. Make sure the visible From domain aligns with the authenticated sending domain where required.
- Check evidence at both ends. Review any mail logs available from the host or sending provider, then check the recipient's spam or quarantine log. A message accepted by WordPress but rejected later needs a deliverability fix, not a WordPress code change.
For a deeper mail setup, see our email deliverability service.
When to stop troubleshooting and get help
Stop changing settings if email stopped after a migration, DNS change or mail provider switch and you cannot identify which system is authorised to send. Also get help when server logs show repeated transport failures or several systems send mail for the same domain.
Randomly changing MX, SPF, DKIM or DMARC records can disrupt working mail as well as website notifications.
For a one-off fault, our Emergency Fix is £249 per incident with a response within 2 working hours. Care plans start from £59 a month if you want ongoing WordPress maintenance and support.