WordPress Not Sending Email? SMTP, DNS, Forms, WooCommerce, and Deliverability Fixes (2026)
Troubleshoot WordPress email not sending with a step-by-step SMTP, DNS authentication, contact form, WooCommerce, password reset, logging, and deliverability checklist.
When WordPress is not sending email, the failure can happen in four places: WordPress never creates the message, a plugin blocks or misroutes it, the host refuses to send it, or inbox providers reject or filter it.
The fix is not “try another contact form plugin” first. Start by identifying which email failed, then move to a proper sender setup with authenticated DNS and repeatable tests.
Quick Diagnosis
Use this table to narrow the problem before changing plugins.
| Symptom | Likely cause | First check |
|---|---|---|
| Password reset never arrives | WordPress sending path is broken | Send a test email from an SMTP plugin |
| Contact form says sent but inbox is empty | Form recipient or mailer issue | Check form notification settings and mail logs |
| WooCommerce order emails missing | Disabled template, wrong recipient, or sender issue | Review WooCommerce email settings and place a test order |
| Emails arrive in spam | Weak authentication or reputation | Check SPF, DKIM, DMARC, From domain, and content |
| Some emails send but others fail | Plugin-specific notification settings | Test each plugin type separately |
| Admin emails work but customer emails fail | Recipient filtering, template, or suppression | Check logs and customer email address status |
Do not rely on one test. Test password reset, contact forms, WooCommerce, admin notifications, and any membership or booking plugin that sends email.
Why WordPress Email Fails
WordPress uses wp_mail(), which usually passes messages to the server’s mail function unless a plugin changes the route. That default path can be unreliable because:
- The host may block or throttle PHP mail.
- Messages may not be authenticated with the sending domain.
- Shared hosting IPs may have poor reputation.
- The From address may not match the website domain.
- Failures may be silent unless logging is enabled.
- Multiple plugins may override the same email behavior.
- DNS records may be missing or misaligned.
The long-term fix is to send through a dedicated SMTP or API mailer and verify the domain.
Step 1: Confirm the Failure Type
Create a short test matrix:
| Test | Why it matters |
|---|---|
| Password reset | Confirms core WordPress mail |
| New user notification | Confirms admin and account mail |
| Contact form submission | Confirms form plugin notifications |
| WooCommerce test order | Confirms customer and store order email |
| Failed order or refund | Confirms less common transactional templates |
| SMTP plugin test email | Confirms connection to the mailer |
Record whether each message is delivered, missing, delayed, or sent to spam. This tells you whether the issue is global or limited to one plugin.
Step 2: Install an SMTP or API Mailer
Use a plugin such as WP Mail SMTP or another reputable WordPress mailer. The plugin should let you route WordPress email through a sender such as Brevo, SMTP.com, SendGrid, Mailgun, Gmail, Amazon SES, or another provider that supports authenticated sending.
Basic setup:
- Install the mailer plugin.
- Choose a provider supported by the plugin.
- Connect with an API key, OAuth, or SMTP credentials.
- Set a From Email that uses your domain.
- Set a From Name that matches the site or brand.
- Enable force-from settings only after confirming it will not break plugins.
- Send a test email.
API mailers are often easier to monitor than raw SMTP credentials because they can provide clearer errors and event logs. SMTP still works when it is configured correctly.
Step 3: Verify Sender and DNS Authentication
Most “WordPress emails go to spam” issues come down to identity.
Check:
- The From domain is the same domain or verified subdomain you control.
- SPF includes the service that sends WordPress mail.
- DKIM is enabled for the sending service.
- DMARC exists and aligns with your sender setup.
- The From address is not a free mailbox such as Gmail or Yahoo for business email.
- The reply-to address is monitored.
After adding DNS records, wait for propagation and retest. A correct DNS panel is not proof until real messages authenticate in inbox headers.
Step 4: Fix Contact Form Emails
Contact form plugins often have their own notification settings.
Checklist:
- Confirm the form notification is enabled.
- Make sure the “To” address is correct.
- Use a From address on your domain, not the visitor’s email.
- Put the visitor email in Reply-To instead.
- Check required fields and spam protection settings.
- Disable duplicate notifications while testing.
- Test with a non-admin email address.
If the SMTP test passes but contact form email fails, the issue is usually in the form configuration, not the sender.
Step 5: Fix WooCommerce Emails
WooCommerce has separate templates and recipients for different events.
Check:
- Go to WooCommerce email settings and confirm each required email is enabled.
- Review the recipient field for admin emails.
- Place a real test order with a test product.
- Test processing, completed, refunded, and failed order states.
- Confirm guest checkout emails and account emails both send.
- Check whether another plugin customizes WooCommerce email templates.
- Review logs for failed API or SMTP responses.
If customers do not receive order email, treat it as a revenue and support issue. Fix transactional delivery before launching marketing campaigns.
Step 6: Resolve Emails Going to Spam
Spam placement usually needs several improvements, not one magic setting.
Start here:
- Authenticate the domain with SPF, DKIM, and DMARC.
- Use a consistent From name and From address.
- Avoid sending from a domain that has never warmed up if volume is high.
- Remove broken links, URL shorteners, and misleading subject lines.
- Keep attachments out of routine WordPress notifications where possible.
- Monitor bounce and complaint signals in the sending platform.
- Separate marketing email from transactional WordPress email if volume or reputation differs.
If email is important to revenue, do not ignore spam tests after the first successful inbox delivery. Repeat testing after theme, plugin, hosting, DNS, or sender changes.
Step 7: Check Plugin Conflicts and Hosting Rules
If the sender works but WordPress still fails inconsistently, isolate conflicts.
Safe process:
- Confirm backups are current.
- Disable other mail-related plugins temporarily.
- Keep only the SMTP or API mailer active.
- Test core WordPress email.
- Test contact forms.
- Test WooCommerce.
- Re-enable plugins one at a time.
Also check host-level restrictions. Some managed hosts block outbound SMTP ports or require approved mail services. If SMTP credentials fail but API sending works, hosting restrictions may be the reason.
Error Patterns and Fixes
| Error or behavior | What to do |
|---|---|
| Authentication failed | Recreate credentials and confirm username, password, API key, or OAuth connection |
| Connection timeout | Check host firewall, SMTP port, SSL/TLS mode, or use API mailer |
| Sender not verified | Verify the From domain or sender address in the email service |
| DKIM fail | Recopy DKIM DNS records and wait for propagation |
| SPF fail | Add the sending service to SPF and avoid multiple SPF records |
| DMARC fail | Align From domain with SPF or DKIM and review policy |
| Form sends to admin but not user | Check user notification template, merge fields, and suppression |
| WooCommerce admin email missing | Check template enabled status and recipient field |
Monitoring After the Fix
WordPress email can break later after plugin updates, DNS edits, domain changes, or provider changes.
Monitor:
- SMTP or API error logs.
- Bounce rate.
- Spam complaints.
- Failed WooCommerce emails.
- Contact form notification failures.
- Password reset support tickets.
- DMARC reports if you review them.
Set a recurring monthly test for important sites. For ecommerce, test after every major WooCommerce or checkout change.
Launch QA Checklist
Before declaring the issue fixed:
- Password reset arrives in inbox.
- New user email arrives.
- Contact form admin notification arrives.
- Contact form visitor confirmation arrives if used.
- WooCommerce order emails arrive for admin and customer.
- Refund, failed order, and completed order emails work.
- Sender domain passes SPF and DKIM.
- DMARC exists.
- Unused mailer plugins are disabled.
- Logs show no repeated failures.
- The support team knows where to check email logs.
FAQ
Is WordPress email broken by default?
Not always, but the default sending path is fragile. It depends on hosting, server mail configuration, sender identity, and inbox filtering. Production sites should use a dedicated mailer.
Should I use SMTP or an API mailer?
Both can work. API mailers often provide clearer setup and logs, while SMTP is widely supported. Choose the option your plugin and email provider support best, then test it thoroughly.
Can I send from a Gmail address?
For a business website, use an address on your domain. Sending site mail from a free mailbox can create authentication and trust problems.
Why does the SMTP test work but WooCommerce still fails?
The SMTP connection may be fine while WooCommerce templates, recipients, order status triggers, or another plugin are misconfigured. Test WooCommerce-specific email events separately.