When WordPress email is not sending, the failure may be in WordPress, the SMTP connection, the sending provider, DNS authentication, or the recipient’s mail system. The fastest way to fix it is to identify where the message stops rather than changing multiple settings at once.
This guide explains how to test the complete mail path, interpret SMTP errors, repair sender authentication, and troubleshoot contact form or WooCommerce emails. The goal is not merely to see an email marked as sent in WordPress, but to confirm that the sending provider accepted it and the recipient’s server delivered it.
Before changing SMTP credentials, DNS records, or plugins, run one controlled test. Use the Email Test or Test Email feature in your active SMTP or mail-logging plugin. If you have neither, install a reputable mail-testing plugin from Plugins → Add New, record the result, and remove the plugin when troubleshooting is complete.
Use the result to identify the likely failure layer:
| Test result | Next check |
|---|---|
| No WordPress mail event | Confirm that logging is active, then check whether WordPress or the originating plugin generated the message. |
| Message generated, but SMTP failed | Inspect the complete SMTP response and the provider’s connection settings. |
| Provider accepted the message, but it bounced or reached spam | Check delivery events, sender authentication, alignment and reputation. |
| Policy-related rejection | Review the sending provider’s policy and the complete rejection notice. |
| Test works, but a form or store notification fails | Check the contact form workflow or the WooCommerce order event and notification. |
| Intermittent or recipient-specific failure | Compare messages, recipients and timestamps in the delivery logs. |
Next, compare the controlled test with real WordPress events. Request a password reset from the login screen, submit your contact form, and, if you use WooCommerce, place a low-risk test order that should trigger an email. A working SMTP test combined with a missing form notification points to the form workflow, not the SMTP transport.
Record the sender, recipient, timestamp, timezone, and exact result before editing anything. As the WordPress wp_mail() reference explains, a successful return value means the sending method processed the request without reporting an error. It does not prove that the recipient received the message or that it reached the inbox.
Repeat the test using an address at a different mailbox provider. If one provider receives the message and another consistently does not, investigate the recipient-specific delivery path instead of changing site-wide SMTP settings.

When password resets, test messages, form notifications, and store emails all fail, treat the problem as site-wide. The first question is whether WordPress creates a mail event at all.
In the WordPress dashboard, check Settings → General → Administration Email Address, then verify the recipients configured in the plugins that send notifications. The administration address can affect site notices, but it does not configure SMTP or determine the sender used by every plugin.
Open your active SMTP or mail plugin and inspect its setup status and available error log. Look for disabled sending, an incomplete setup process, an expired authorization token, or a recorded connection failure. Preserve the existing settings and change one variable at a time. Editing the sender, credentials, host, and port together removes evidence that could identify the original fault.
| What you observe | What it indicates |
|---|---|
| No entry exists in a log that is enabled and captures this mail path | The originating event may not have run; verify the plugin’s trigger and logging coverage |
| WordPress reports success, but the provider has no event | The handoff or transport path needs investigation |
| The provider records a rejection | The message reached the provider; follow the rejection details |
| The provider accepts the message and it reaches spam | Generation and handoff worked; investigate deliverability |
If the site stopped sending after a plugin update, PHP-version change, migration, or domain change, investigate that change first. Use staging where possible and review relevant PHP errors rather than randomly disabling production components. If the failure followed a move, use a structured website migration checklist to verify DNS, configuration, URLs, and post-migration behavior.
SiteValley web hosting plans include cPanel, free SSL, Anycast DNS, and daily backups with 60 recovery points. The Newbie plan is listed at $30 per year for one website and 20 email accounts; larger plans support additional sites and mailboxes. Confirm the current plan details before ordering.
Run a conflict test only after recording the original error and confirming that multiple unrelated email types fail. On staging, temporarily switch to a default WordPress theme and deactivate plugins systematically while repeating the same controlled test.
For a WooCommerce or lead-generation site, use staging or schedule a maintenance window. Disabling checkout, forms, or other production plugins without a plan can cause lost orders or enquiries.
If the general email test works, inspect the form workflow before touching SMTP. Edit the affected form and open its Notifications, Emails, or equivalent settings. Confirm that the notification is enabled, the To field contains the intended mailbox, and conditional rules do not suppress it. For example, a notification configured to send only when Department = Sales will not run for other selections.
If the current form plugin lacks the controls or logging you need, compare the features of established WordPress contact form plugins before replacing it.
Pay particular attention to From and Reply-To. Use an address on a domain that your mail provider authorizes, such as forms@example.com, in the From field. Put the visitor’s submitted address in Reply-To. This lets the site owner reply to the visitor without making the message falsely claim that your website sent mail on behalf of Gmail or another external domain.
| Field | Example value | Purpose |
|---|---|---|
| From | forms@example.com | Use a sender address authorized by your provider; do not use the visitor’s Gmail address here. |
| To | owner@example.com | Deliver the notification to the site owner. |
| Reply-To | visitor@gmail.com | Send the owner’s reply to the visitor. |
A visitor-controlled From address can conflict with SPF, DKIM, DMARC, sender-verification rules, and anti-spoofing filters even when the form submission itself succeeds.
Test the owner notification and visitor confirmation separately. Form builders commonly treat them as independent notifications with different recipients, templates, and conditional rules. One can work while the other remains disabled or incorrectly configured.
Submit the form and confirm that the entry appears in the plugin’s submissions or entries area, if that feature is available. If there is no stored or logged submission, investigate form processing before email delivery. Check required-field validation, anti-spam results, conditional logic, browser JavaScript errors, and submission handling.
Follow this sequence:
If other WordPress emails work, trace the order event before changing the mail transport. Go to WooCommerce → Settings → Emails, open the missing notification, and confirm that it is enabled. For store or administrator emails, verify the configured recipients. Customer notifications normally use the billing email saved on the order. The official WooCommerce email settings guide lists each notification and its trigger.
Match the missing message to the event that should generate it:
| Symptom | Likely layer | Next check |
|---|---|---|
| Order exists but no administrator notification arrives | WooCommerce notification | Enabled email and administrator recipient |
| Administrator receives mail but customer does not | Customer-specific path | Billing email, notification type, and provider event |
| Failed-payment email is absent | Order or payment workflow | Check the transition to Failed and the enabled notification; the documented failed-order trigger covers orders previously pending or on hold |
| No email follows a test payment | Gateway or order status | Check order status, gateway logs, and order notes |
| Email is logged but missing from the inbox | Downstream delivery | Find the recipient in the provider’s event log |
When only one WooCommerce notification fails, investigate that notification’s trigger and recipient before replacing a mail configuration that successfully delivers other messages.
Open WooCommerce → Orders, select the test order, and record its status, timestamp, billing email, expected notification, relevant order notes, WordPress mail event, and provider status. A payment that remains Pending payment, changes to Failed, or never receives the expected gateway callback may not reach the status that triggers the email you expected.
If the order status did not change after payment, investigate the payment integration and its webhook or callback handling before changing SMTP credentials. Follow WooCommerce’s email troubleshooting guide to compare the expected status change with mail logs. Where your installed version provides the transactional-emails log source, check WooCommerce → Status → Logs; otherwise use your existing mail logger and provider events.
Separate WooCommerce messages from payment-platform receipts. A card processor’s receipt is generated outside WordPress, so its absence cannot be fixed in WooCommerce email settings. Conversely, if the administrator notification arrives but the customer’s WooCommerce email does not, focus on the customer notification, billing address, recipient domain, and provider event. Stores that rely on order notifications should also assess the logging, security, and scalability of their eCommerce hosting environment.

An SMTP error is useful evidence because its category identifies the next check. In the SMTP plugin, compare the hostname, username or API credential, authorized From address, encryption mode, and submission port with the provider’s current documentation. Do not cycle through ports or disable certificate verification merely to hide an error.
| Observed result | Likely layer | What to check | Escalation point |
|---|---|---|---|
| Connection timeout | Network or endpoint | Hostname and documented port | Host or provider: firewall and outbound restrictions |
| Connection refused | Endpoint or network | Correct server and port | Provider availability or host restriction |
| Authentication failed | Account authorization | Username, password, token, or OAuth | Mail provider’s authentication policy |
| Sender unauthorized | Sender identity | From address and verified sender | Provider’s sender or alias authorization |
| TLS error | Encryption, certificate, or software | TLS mode and documented port | Host’s CA certificates or PHP/OpenSSL stack |
| Provider rejection | Provider policy | Complete SMTP response | Provider support with the rejection code |
Escalate with the exact error, timestamp, timezone, destination hostname, and port rather than reporting only that WordPress email does not work.
SMTP ports are not interchangeable. The email TLS standard distinguishes implicit TLS on port 465 from STARTTLS on port 587:
| Port | Normal role | What to know |
|---|---|---|
| 25 | Server-to-server SMTP | Frequently restricted for outbound website connections |
| 465 | Message submission with implicit TLS | TLS starts immediately; use it only when documented |
| 587 | Message submission, commonly with STARTTLS | Standard submission option for many providers |
| 2525 | Provider-specific alternative | Use only when the provider supports it |
Changing the port helps only when the new port matches the provider’s endpoint and encryption requirements. A TLS error on port 465 does not prove that port 587 will work without other configuration changes.
For password resets, order receipts, and lead notifications, a transactional email service is often more suitable than personal-mailbox SMTP because delivery events, bounce details, and complaint reporting make failures easier to trace. API-based sending can avoid SMTP connectivity restrictions, but it still requires sender authorization and any DNS records specified by the provider.
Protect the repaired configuration by creating a separate credential for each site, limiting WordPress administrator access, rotating credentials after staff changes, storing secrets in the mailer’s supported configuration, and revoking old credentials after the replacement works. Include these controls in a broader plan to secure your WordPress website.
For Gmail or Google Workspace, prefer your mailer’s supported OAuth connection. Google Workspace no longer accepts ordinary username-and-password sign-in from less-secure third-party apps. Where account policy permits a legacy SMTP connection, use a dedicated Google app password, which requires 2-Step Verification, rather than your normal password. Availability varies by account and organization. Follow Google’s current app-sending instructions for the selected route.
For Microsoft 365, choose a mailer that supports OAuth and have the administrator check the mailbox and tenant’s SMTP AUTH policy. Security defaults can disable SMTP AUTH; do not weaken organization-wide security simply to make an old mailer work. Microsoft’s updated retirement notice says Basic SMTP AUTH behavior remains unchanged through December 2026, with further default restrictions afterward. Plan migration to OAuth instead of building a new password-based setup.
If the site sends business-critical transactional mail or produces a pattern unsuitable for an individual mailbox, use a transactional service. After changing the transport, rerun the controlled test and confirm that the provider records the event before testing real WordPress notifications.
Once the sending provider accepts the message, stop reconfiguring WordPress. Open the provider’s event or activity log and find the message by recipient and timestamp. Statuses such as delivered, deferred, bounced, blocked, and complained describe different outcomes. Provider acceptance proves only that the sending platform received the message.
Where available, check cPanel → Email → Email Deliverability for the local server’s authentication recommendations, then compare them with your actual sender’s requirements. cPanel’s Email Deliverability documentation explains the DNS authority requirement: make changes at the service hosting your authoritative DNS. If that is cPanel, use Domains → Zone Editor → Manage; if DNS is hosted elsewhere, editing cPanel’s local zone will not update the public records.
| Control | Purpose | A pass proves | Common failure | Next action |
|---|---|---|---|---|
| SPF | Authorizes sending infrastructure | The sending IP is authorized for the envelope domain | Multiple SPF policies or a missing sender | Consolidate authorized sources into one SPF policy |
| DKIM | Adds a cryptographic signature | The signature validates for its signing domain | Missing or incorrect selector record | Publish the provider’s exact selector and value |
| DMARC | Evaluates visible-From alignment and publishes policy | SPF or DKIM passes and aligns with the From domain | Legitimate senders are omitted or misaligned | Monitor reports and correct alignment before enforcement |
Alignment is essential. Under DMARC’s identifier-alignment rules, a DKIM signature can validate but still fail DMARC if it authenticates an unrelated domain. SPF can pass for the envelope sender without aligning with the address shown in From. MX records determine where a domain receives mail; they do not authenticate outbound WordPress messages.
A DKIM selector identifies the public key to retrieve, such as selector._domainkey.example.com. Verify that the selector shown by your provider resolves to the expected key. Do not copy a DKIM record from another domain or provider. Publish only one SPF policy for a hostname; multiple SPF policies can produce a permanent evaluation error. Multiple quoted strings within a single TXT record are a different case.
Treat DMARC as a staged control rather than a spam-folder switch. Begin with monitoring when appropriate, collect aggregate reports, identify every legitimate sender, correct alignment, and then move deliberately toward quarantine or rejection. Enabling strict enforcement before inventorying all senders can block legitimate mail.
An external mail diagnostic can provide independent evidence about authentication and reputation signals. A clean result does not guarantee inbox placement because each recipient system applies its own filtering.
A 4xx SMTP response normally represents a temporary failure, and the sending system may retry according to its queue policy. A 5xx response is permanent for that delivery attempt and generally requires correcting the stated problem before another attempt will succeed.
Preserve the complete response, provider message ID, recipient, and timestamp. After authentication passes, check From-domain alignment, unexpected volume increases, repeated bounces, complaints, shared-infrastructure reputation, message content, and recipient filtering.

If the site uses the local cPanel mail system, open cPanel → Email → Track Delivery and search for the affected recipient. cPanel’s Track Delivery guide explains the event icons and Result column. Compare messages sent at approximately the same time to different mailbox providers.
| Track Delivery event | What to check |
|---|---|
| Success | The recorded delivery completed; this alone does not prove inbox placement. |
| Unknown | Delivery may still be in progress; inspect the Result column. |
| Deferred | The server plans to retry; inspect the temporary failure. |
| Error or Rejected | Read the full Result response before changing settings. |
| Filtered | The server accepted the message but filtering prevented inbox delivery. |
| No event | Check logging availability and retention, and whether WordPress used another provider. |
A missing cPanel event does not prove that no email was sent. Track Delivery depends on the host enabling the feature and retaining the relevant eximstats data. If WordPress uses an external SMTP or API provider, check that provider’s event log instead.
Match the WordPress timestamp to the cPanel or provider event and save the message ID and complete response. For locally hosted mailboxes, also check recipient spelling, aliases, forwarding loops, mailbox quota, filters, and mail-routing settings.
When contacting support, provide the site domain, sender, recipient, exact timestamp and timezone, message type, message ID, SMTP provider, observed status, complete response, comparison test results, and any recent SMTP, DNS, migration, or routing changes.
Escalate repeated deferrals, unexplained local rejections, connection restrictions, or suspected queue problems with the evidence attached. Root-managed VPS or dedicated servers may require inspection of outbound restrictions, firewall rules, mail queues, MTA logs, hostname configuration, reverse DNS, TLS, and rate limits.
Do not modify firewall rules, mail-transfer-agent settings, or reverse DNS simply to test a theory. These changes can affect every domain on the server and should be handled by an experienced administrator or hosting support team.
Some rejections cannot be fixed in WordPress. If the notice mentions prohibited content, excessive complaints, unverified recipients, account suspension, or manual review, preserve the exact response and consult the provider’s acceptable-use policy.
| Result | Owner | Next action |
|---|---|---|
| Technical failure | Site administrator or host | Repair the documented connection error |
| Sender-verification failure | Site administrator or provider | Complete the required verification |
| Reputation enforcement | Email provider | Review bounces, complaints, and remediation steps |
| Acceptable-use rejection | Account owner and provider | Compare the site and message with provider policy |
| Abuse-related suspension | Provider | Preserve the notice and contact provider support |
| Marketing sent through a route that prohibits it | Site owner | Use a provider-approved marketing route with appropriate consent and unsubscribe controls |
Receipts, account alerts, and password resets are usually transactional messages. Send newsletters and promotions through a provider and sending setup that explicitly supports marketing, consent records, unsubscribe handling, and suppression lists. A provider may offer both transactional and marketing tools, so follow the rules for the route you actually use.
For adult, privacy-sensitive, or regulated sites, verify both the web host’s and email provider’s policies before integration. A web host accepting the website does not mean the email provider accepts its content or sending pattern.
Before sharing logs, determine whether WordPress, cPanel, or provider dashboards retain message bodies, addresses, or other personal data. Limit access and retention when the messages contain sensitive information. Do not attempt to bypass provider enforcement by rotating domains or credentials.
Fixing WordPress email starts with identifying where the message path breaks. First confirm that WordPress generated the event, then inspect the SMTP or API handoff, the provider’s delivery record, DNS authentication, and the recipient’s response. Contact forms and WooCommerce notifications should be tested as separate workflows because a successful general email test does not prove that their triggers and recipients are configured correctly.
Change one setting at a time and preserve timestamps, message IDs, and complete errors. That evidence distinguishes a WordPress configuration problem from an SMTP failure, authentication issue, recipient rejection, or provider policy decision—and prevents unnecessary changes to a mail transport that is already working.
Why is WordPress not sending emails?
Does a successful WordPress email test prove delivery?
Which SMTP port should WordPress use?
Why do contact form emails go to spam?
Why does a WooCommerce email fail when other WordPress emails work?
What information should I send to hosting support?
Quick Customer care response, accurate and broad assistance, easy to use client area.....
I am very happy with the service. I am with site valley for many years and at the present usimg 2 hosting packages. Their service is excellent and super fast. Thanks & Greatly Appreciated
I've been hosting my websites with Sitevalley for more than 6 years. Very satisfied with the services and reliability they provide, competitive prices, almost no downtime, fast and knowledgeable customer support.
I have been using side valley for a couple of years now and have to say I am very happy with the service they offer.I use many Hosting services but site valley stands out in front. Reliable service, great support.I don't normally leave reviews but felt I wanted to for this service as it has been fantastic
I didn't want to review so soon on into taking out hosting with site valley but I feel obliged because their customer service is outstanding, second to none, every time I had an issue it was sorted immediately. I would highly recommend Site Valley.
I have been with Sitevalley for over a year and it's the best hosting I have EVER used. And I have been through a lot of them.
The support staff are amazing, and it's clear that they have a passion for hosting websites. I've rather enjoyed this webhosting company and it's stability for the price is bar-none, amazing.
My collegue adviced me to use SiteValley as a reliable hosting provider with great prices, professional and fast Customer Service. My experience with SiteValley was exactly the way I was promised.
I have been with SiteValley for many years, and plan to stay with them for many more. Customer support is very responsive and knowledgeable.
SiteValley.com is rated 4.8 / 5 based on 329 Reviews »
© 2001 – 2026 SiteValley.com. All Rights Reserved.