WordPress Not Sending Emails: How to Diagnose and Fix It
If your WordPress site has stopped sending emails, you’re far from alone. It’s one of the most common issues site owners face and it tends to surface at the worst possible moment, when a customer is waiting for an order confirmation, a new user never receives their password reset link or a contact form submission vanishes into thin air. The frustrating part is that WordPress itself rarely tells you anything has gone wrong. Forms appear to submit successfully, WooCommerce marks orders as complete and user registrations go through without a hitch. The emails simply never arrive. If managing server configurations and mail delivery feels like a step too far, WordPress support services for business websites can diagnose and resolve email problems quickly so you can focus on running your business.
WordPress shoots itself in the foot with email by relying on the ancient PHP mail() function. This function dumps everything onto your web server’s mail transfer agent, which might have been fine when email security was more relaxed. But email providers today demand proper authentication and they’re ruthless about it. Messages sent via php mail() usually arrive without SPF, DKIM or DMARC records, so receiving servers bin them immediately or shunt them to spam. Fix this core issue and you’ll stop the endless cycle of temporary workarounds.
Why WordPress Emails Fail to Deliver
Your hosting setup is probably the culprit when WordPress emails vanish into thin air. Authentication failures kill more WordPress emails than anything else. Mail servers interrogate every incoming message to verify the sender’s authorisation through DNS records. SPF tells servers which IP addresses can send mail for your domain, DKIM adds a digital signature and DMARC sets the policy for handling authentication failures. Miss any of these or configure them wrong and your emails get bounced. The Google Workspace documentation on email authentication explains how these three systems work together to verify legitimate senders.
Watch out for plugins that mess with WordPress email functions. Two plugins trying to control email routing at the same time creates a right mess where nothing gets sent. Security plugins love blocking outbound connections too and managed hosting platforms often lock down outbound ports by default. Server-level firewall rules can stop your emails dead in their tracks without you ever knowing.
| Common Cause | Symptoms | Likely Fix |
|---|---|---|
| PHP mail() disabled by host | No emails sent at all | Use an SMTP plugin |
| Missing SPF/DKIM records | Emails land in spam | Configure DNS records |
| Plugin conflict | Intermittent delivery | Deactivate and isolate |
| Hosting throttling | Delayed or missing emails | Switch to external SMTP service |
| Incorrect “From” address | Emails rejected by recipient server | Set sender to match domain |
Check the basics first. Your site’s admin email address under Settings > General might be wrong or maybe only certain emails are failing while others get through fine. Try a password reset or simple contact form to see what’s happening.
Testing Whether WordPress Can Send Email
Before changing anything, figure out what’s broken and how broken it is. WordPress might be failing completely or just certain email types aren’t making it through. Are messages reaching spam folders or never leaving your server at all? Getting these answers saves hours of troubleshooting and points you straight to the fix you need.
Install a plugin that sends test emails and shows you what went wrong. WP Mail SMTP handles this perfectly and most WordPress sites already use it for email configuration anyway. After installation, go to WP Mail SMTP > Tools > Email Test, pop in your email address and fire off a test message. You’ll see whether WordPress thinks the email sent properly plus any error messages when things go sideways. The WordPress developer documentation for wp_mail() covers the function that powers all WordPress email sending.
Test email sends but never shows up? The problem’s happening after it leaves your server. Check spam folders first, then examine the email headers if you can find the message anywhere. Headers reveal which server sent it, whether authentication worked and why receiving servers might have rejected it. But if the test fails completely, your server’s the problem and you need a different sending method.
Your server’s mail logs tell the real story. Most hosting control panels have an email log section tucked away somewhere and if you’re on cPanel it’s under Email > Track Delivery. These logs show every single email attempt your server makes, including bounces and rejections. WordPress itself can’t log emails, so this is your best shot at seeing what’s happening behind the scenes.
Configuring SMTP for Reliable Delivery
Stop using PHP mail() and switch to SMTP. That’s the permanent fix for almost every WordPress email problem you’ll encounter.
SMTP authenticates with a proper mail server using credentials, which means your emails get sent through an actual mail service instead of your web server just firing them off into the void. Business email accounts through Google Workspace or Microsoft 365 work fine for low-volume sites, but they’ve daily sending limits. Busier sites need dedicated transactional services like Mailgun, SendGrid or Amazon SES because they’re built for automated emails and won’t throttle you.
You’ll need a plugin to set up SMTP in WordPress. WP Mail SMTP is the go-to choice, though FluentSMTP and Post SMTP do the job just as well. Configuration means plugging in your SMTP host address, port number, encryption type and login details.
SMTP Host: smtp.yourmailprovider.com
SMTP Port: 587
Encryption: TLS
Authentication: Yes
Username: your-email@yourdomain.co.uk
Password: your-app-password-or-smtp-key
Send another test email once you’ve saved those SMTP settings. Your WordPress site will now route all emails through your SMTP service rather than the server’s PHP mail() function, which means form notifications, WooCommerce receipts, user registrations and password resets all get delivered properly. And this setup sticks around through WordPress updates and hosting migrations.
Setting Up DNS Records for Email Authentication
Getting SMTP configured won’t guarantee your emails land in inboxes instead of spam folders. Receiving mail servers need to verify that your sending service has permission to send email on behalf of your domain and that verification happens through DNS records.
Start with SPF records. SPF tells receiving servers which mail servers can send email for your domain and goes into your DNS settings as a TXT record that includes your SMTP service’s sending servers. Google Workspace needs _spf.google.com in there, whilst transactional services like Mailgun provide their own specific values in their documentation. Don’t create multiple SPF records for the same domain because that breaks authentication. You’ll need to add the new service to your existing SPF record if you already have one.
DKIM adds a cryptographic signature to every email so recipients can verify the message wasn’t tampered with and came from your domain. You’ll get a DKIM key from your SMTP service that needs adding as a TXT or CNAME record in your DNS. The Cloudflare guide to DKIM records breaks down the technical bits quite well.
Think of DMARC as the boss that tells email servers what to do when SPF and DKIM checks go wrong. Your DNS gets a basic DMARC record that looks something like this.
A sensible starting DMARC policy is
v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.co.ukwhich monitors authentication results without rejecting any mail. Once you’re confident that legitimate emails are passing SPF and DKIM checks, you can tighten the policy top=quarantineorp=rejectto actively block spoofed messages.
Getting your DNS records sorted doesn’t just stop delivery headaches. It shields your domain from spammers who fancy pretending to be you and when they try their luck, DMARC makes sure their fake emails get the boot.
Troubleshooting Common SMTP Issues
SMTP setup won’t always go smoothly and connection timeouts crop up constantly. Your hosting provider probably blocks the outbound ports that SMTP needs, which means port 587 or port 465 won’t work. Give your host a call to check they’re allowing connections on your chosen port. Some SMTP plugins let you switch to alternative ports or use API routing instead, which sidesteps the whole port blocking issue completely.
Wrong username or password causes most authentication failures. Google Workspace and Gmail accounts need app passwords instead of your normal login when you’ve got two-factor authentication turned on and Microsoft 365 works the same way.
Test tools might show everything’s working perfectly, but certain emails still refuse to budge. Plugin conflicts are usually the villain here. Form builders and e-commerce extensions love creating their own email sending methods that completely ignore your SMTP plugin. You’ll need to dig into the settings of any plugin that handles email and make sure it’s using WordPress’s standard wp_mail() function instead of doing its own thing. Getting proper WordPress maintenance and security in place means we catch these conflicts before your users even notice.
- Check that outbound ports 587 or 465 are open on your hosting server
- Verify SMTP credentials and use app-specific passwords where required
- Ensure only one plugin is handling email routing to avoid conflicts
- Test with a simple text email before testing HTML-formatted messages
- Review your SMTP service’s sending logs for bounced or rejected messages
- Confirm that your “From” email address matches your authenticated domain
Rate limiting will bite you when you least expect it. Free email services and business accounts both cap how many emails you can send per day or hour and hitting those limits means your emails just vanish into thin air.
WooCommerce and Contact Form Email Problems
Email failures hit WooCommerce shops hardest because every transactional email matters. Order confirmations, shipping updates, refund notices and new account emails must reach customers reliably. Miss these and you’re looking at confused customers, endless support tickets and lost sales.
WooCommerce gives you email controls under WooCommerce > Settings > Emails where you can pick which emails get sent and tweak their content. But: WooCommerce still uses WordPress’s wp_mail() function behind the scenes, so all that SMTP setup we covered earlier applies here too. Set your “From” name and address in the SMTP plugin to match your store branding so customers see something they recognise instead of a random server address.
Form plugins like Gravity Forms, Contact Form 7 and WPForms cause email headaches more often than you’d expect. Every form submission triggers a notification email and when that fails to send, you’ve lost the enquiry completely. The sender address needs to match your domain, not the person filling out the form. Set your “From” address to something like website@yourdomain.co.uk and put the submitter’s email in the “Reply-To” field instead. That way authentication passes but you can still respond directly to whoever sent the message.
Keeping Email Delivery Reliable Long Term
Getting emails working once doesn’t mean they’ll stay that way forever. Email logging should be your first priority. WP Mail SMTP Pro and Post SMTP both track every email WordPress tries to send and whether it succeeds or fails. You’ll spot problems before customers start complaining about missing emails. And when someone does report an issue, you’ve got a complete record to check instead of guessing what went wrong.
Send test emails through your SMTP plugin regularly to make sure everything still works. Takes seconds but catches problems early. After updating WordPress, your theme or plugins, fire off another test message to confirm nothing broke. Many WordPress managed hosting providers include email monitoring in their packages, so check what yours offers.
Google Postmaster Tools gives you the real picture of how Gmail sees your domain’s reputation, showing authentication pass rates and spam complaints without any sugar coating. Your reputation tanks when email configuration changes or someone’s spoofing your domain. Catch it early and you can sort the problem before delivery takes a serious hit. The Moz blog covers domain reputation and how it affects your wider digital marketing efforts.
Contact forms that eat submissions, shops that never send order confirmations, membership sites with broken password resets. These silent failures chip away at user trust faster than you’d think. WordPress email delivery isn’t exciting work, but every interaction your site has depends on it. Switch to SMTP, get your DNS records right and keep monitoring delivery. Do that and email problems become yesterday’s headache while every message finds its intended recipient.
FAQs
Why is my WordPress site not sending emails?
WordPress sends emails through the PHP mail() function by default, which many hosting providers restrict or disable entirely to prevent spam. Even when emails do leave your server, they often land in spam folders because they lack proper authentication. Missing SPF, DKIM and DMARC records in your DNS settings mean recipient servers cannot verify that your emails are legitimate, so they get filtered out. Plugin conflicts and incorrect sender addresses are also common culprits.
What is SMTP and why should I use it for WordPress emails?
SMTP (Simple Mail Transfer Protocol) authenticates with a proper mail server using credentials, which is far more reliable than the default PHP mail() function that just fires emails out with no authentication. Setting up SMTP through a plugin like WP Mail SMTP means your emails get sent through a legitimate mail service, dramatically improving delivery rates and reducing the chance of landing in spam folders. You can use your existing business email provider or a dedicated transactional service like Mailgun or SendGrid.
How do I test whether my WordPress site can send emails?
Install WP Mail SMTP and use its built-in email test feature, which sends a test message and reports whether it succeeded or failed along with any error details. If the test email sends but never arrives, check your spam folder and examine the email headers for authentication failures. If it fails to send entirely, the problem is server-side and you need to configure a different sending method. Your hosting control panel’s email logs can also show every outbound email attempt including bounces and rejections.