October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix NowOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
DKIM

How to Fix WordPress Not Sending Email: A Complete Troubleshooting Guide

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The most reliable fix is to move WordPress mail from the server’s unreliable PHP-mail path to one authenticated SMTP or API mailer, then verify the sender domain and test the actual form, order, or password-reset workflow. First determine whether WordPress is failing to generate the message, the host is failing to hand it off, the provider is rejecting it, or the recipient is filtering it.

Start by identifying what is actually failing

“WordPress email is not working” can describe several different failures. Record the symptom before changing settings:

  • No site email arrives: test a password reset and an administrator notification.
  • Only a contact form fails: inspect that form’s notification, recipient, headers, and plugin conflicts.
  • WooCommerce messages fail: check email enablement, order status, scheduled actions, and queues.
  • The form shows an error: investigate validation, JavaScript, PHP, SMTP/API authentication, and server errors.
  • The form says it succeeded but nothing arrives: the message may have been accepted, deferred, rejected, suppressed, quarantined, or delivered to spam.
  • Only one provider or company domain is affected: investigate recipient filtering, reputation, suppression, or domain policy.
  • The issue began after a migration, DNS change, plugin update, password change, or domain change: compare the mailer credentials, sender, DNS records, and application settings with the previous installation.

WordPress’s wp_mail() returning true means the underlying mail process accepted the message; it does not prove inbox delivery. See the WordPress wp_mail() reference.

Quick repair path

  1. Confirm the recipient address and check spam, junk, quarantine, Promotions, and corporate filters.
  2. Open Settings → General and verify the Administration Email Address.
  3. Install one SMTP/API mailer, such as WP Mail SMTP, FluentSMTP, or Post SMTP.
  4. Connect it to an authenticated mailbox or transactional provider.
  5. Set a real, authorized address on your domain as From; put a visitor’s address in Reply-To.
  6. Verify the sending domain and add the provider’s SPF and DKIM records. Add DMARC where appropriate.
  7. Send a mailer test, record the exact result and error, and inspect the provider activity log.
  8. Trigger the real contact-form, password-reset, registration, or order workflow separately.

SMTP is not a magic fix: it does not correct an invalid form recipient, a broken queue, missing DNS authentication, a provider suppression, or spam filtering.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Check WordPress and recipient settings before changing the mailer

Verify the receiving mailbox

  • Check the address character by character.
  • Search spam, junk, quarantine, Promotions, and organizational filtering.
  • Try a second address at a different provider.
  • Check whether the mailbox is full, disabled, or rejecting messages.

Verify site-wide addresses

Go to Settings → General and check the Administration Email Address. Confirm that the Site Address and WordPress Address still use the intended domain after a migration.

Verify each application’s notifications

Check the relevant form, membership, security, or WooCommerce settings. Confirm that notifications are enabled and that the intended recipient is configured. For WooCommerce, also review email enablement, failed orders, order notes, scheduled actions, and background-processing queues.

Use the correct headers

Header Use it for
To The site owner, support team, or intended recipient.
From A real, authorized address on the authenticated site domain, such as [email protected].
Reply-To The visitor’s submitted address, so staff can reply without spoofing the sender.

Putting a visitor’s address in From commonly causes SPF/DMARC alignment failures and provider rejection. WordPress’s mail guidance explains sender and domain authorization issues in the Mail section of the Advanced Administration Handbook.

How WordPress sends mail

WordPress creates the message with wp_mail(), which uses PHPMailer. By default, it normally hands the message to the server’s PHP mail() or sendmail-compatible transport. The host must have a functioning mail-transfer agent or relay, and that path may be disabled, misconfigured, blocked, or poorly trusted by receiving providers.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

An SMTP plugin can route mail through authenticated SMTP, while an API integration sends through a provider’s HTTPS API. WordPress documents both a properly configured local MTA and remote SMTP relays as valid approaches.

Choose one authenticated mailer

Option Best suited to Advantages Trade-offs
Provider API Transactional sites and production mail Avoids many SMTP port and connection problems; provider logs, bounces, and suppression data are usually available. Requires an account, API credentials, domain verification, and provider-specific setup.
Authenticated SMTP Simple setups and existing mailboxes Familiar hostname, port, encryption, username, and password configuration. More sensitive to blocked ports, TLS mismatches, passwords, and firewall restrictions.
Host relay Very small sites whose host documents and supports it May require no separate provider account. Limits, reputation, logs, and support vary by host.
Self-hosted mail server Experienced infrastructure teams Maximum control. Substantial security, reputation, maintenance, monitoring, and deliverability responsibility.

Use the provider’s current hostname, port, encryption, and authentication instructions. Do not assume one port works everywhere; port 25 is often blocked for outbound traffic, and WordPress specifically notes that Google Cloud Platform environments may block it. If SMTP connectivity fails, ask the host about restrictions or use the provider’s API.

Common provider choices

  • Existing Google Workspace or Microsoft 365: suitable for low-volume organizational notifications when OAuth/API authorization and mailbox policies are acceptable.
  • Small sites: FluentSMTP or WP Mail SMTP with a low-cost transactional provider such as Brevo.
  • Transactional-first delivery: Postmark for time-sensitive password, account, and order messages.
  • Developer control and scale: Mailgun or Amazon SES, with more setup and operational responsibility.
  • Guided WordPress workflow: WP Mail SMTP, which provides setup, testing, and troubleshooting documentation.

Provider pricing and limits change. Brevo advertises a free tier of 300 emails per day and paid plans from $9 per month for 5,000 emails as observed on August 18, 2026. Mailgun advertised Foundation at $35 per month after a one-month promotion for 50,000 emails and Scale at $90 per month after a one-month promotion for 100,000 emails on that date. Treat these as provider-advertised offers, not guarantees. A free plan can still impose approval, quota, suppression, and policy restrictions.

Configure the sender and authenticate your domain

  1. Create or authorize a sender such as [email protected], [email protected], or [email protected].
  2. Set that address as From in the mailer and application.
  3. Use the visitor’s address only as Reply-To.
  4. Complete the provider’s domain-verification process.
  5. Add the provider’s SPF instruction to the existing SPF record, rather than creating a second SPF record.
  6. Add the provider’s DKIM records with the exact selectors and values supplied.
  7. Publish a DMARC policy appropriate to your situation. Monitoring first is safer than immediately enforcing rejection while legitimate senders are still being identified.
  8. Wait for DNS changes to propagate, then re-test authentication and delivery.

What the records do

  • SPF lists systems authorized to send for your domain.
  • DKIM adds a cryptographic signature checked against a public DNS key.
  • DMARC tells receiving providers how to handle authentication failures and helps enforce alignment between the visible From domain and authenticated domains.

Common DNS mistakes include multiple SPF records, a wrong DKIM selector, verifying one domain while sending from another, and using a From domain that does not align with the authenticated domain.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Send a test and inspect evidence

Mailer test

Use the selected plugin’s test-email tool. WP Mail SMTP documents its test and troubleshooting workflow at WP Mail SMTP troubleshooting. Record:

  • Whether the test was accepted.
  • The exact error text and provider response code.
  • The selected mailer and sender address.
  • Whether the provider activity log shows acceptance, deferral, bounce, or suppression.

A successful test proves that this configured test path handled that message. It does not prove that a form plugin, WooCommerce queue, or password-reset workflow uses the same recipient, headers, template, attachment, or hook.

Temporary WordPress failure logging

A developer can temporarily log the failure hook:

add_action( 'wp_mail_failed', function ( $error ) {
    error_log(
        'wp_mail failed: ' . $error->get_error_message()
    );
} );

Keep logs private, never record SMTP passwords, API keys, OAuth tokens, or unnecessary personal data, and remove the snippet after diagnosis. The WordPress reference documents wp_mail_failed and the Boolean return behavior.

Interpret common errors

Evidence Likely causes Next checks
Authentication failed Wrong credentials, required app password, revoked OAuth token, invalid API key, or unauthorized sender. Reauthorize or rotate credentials; verify the account, sender, and provider permissions.
Connection or timeout Wrong hostname or port, TLS mismatch, DNS failure, firewall, or host restriction. Use the provider’s current settings; ask the host whether outbound SMTP is blocked; try the API.
Domain or sender not verified Missing DNS records, wrong domain, unapproved From address, or incomplete provider review. Complete verification and align From with the authenticated domain.
Quota, rate, or account error Daily/monthly limit, sandbox restriction, account review, suspension, or policy block. Read provider activity and account notices; check limits and production access.
Recipient suppressed or bounced Previous hard bounce, complaint, or provider suppression list. Correct the address and remove suppression only through the provider’s documented process.
Application-only failure Invalid recipient, disabled notification, plugin conflict, PHP fatal error, broken hook, oversized attachment, or queue failure. Inspect application settings, PHP/WordPress logs, scheduled actions, and the workflow itself.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

If the SMTP test works but real emails fail

  1. Recheck the form, membership, or WooCommerce notification recipient and enabled status.
  2. Confirm that the application uses the same authorized From address and does not overwrite headers.
  3. Review provider activity for the specific recipient, not just the test message.
  4. Check PHP and WordPress logs for fatal errors, invalid recipients, and attachment failures.
  5. For WooCommerce, inspect failed orders, order notes, scheduled actions, cron, and loopback requests.
  6. In staging, temporarily disable nonessential form, security, caching, and email-related plugins.
  7. Use a default theme if necessary, then re-enable components one at a time.

Do not deactivate plugins on a production store without a maintenance plan: checkout, authentication, forms, and order processing can be interrupted. Ensure only one plugin controls the outgoing mail route.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

If messages arrive in spam

  • Confirm SPF and DKIM pass and that DMARC alignment matches the visible From domain.
  • Use a consistent, authorized sender rather than a visitor’s address.
  • Review provider bounces, complaints, suppression lists, and reputation signals.
  • Check recipient-side quarantine and filtering rules, especially for corporate domains.
  • Test more than one recipient provider; one inbox result does not establish universal delivery.

Authentication improves trust but cannot guarantee inbox placement. Content, sender reputation, recipient policy, bounce rate, and provider-specific filtering also matter.

Staging, migration, and security precautions

  • Use a staging-only recipient override or mail-capture service so test orders and password resets never reach real users.
  • After a migration, recheck the sender domain, API key, OAuth authorization, DNS records, and cloned-site settings.
  • Multisite installations may have network-level and site-level mailer settings; verify both.
  • Store credentials outside publicly accessible files where possible and use least-privilege API keys.
  • Rotate credentials exposed in screenshots, tickets, logs, or repositories.
  • Restrict administrator access to mail settings and delete old logs containing personal data.
  • Do not expose verbose SMTP debugging on public pages.
  • Investigate unexpected outbound mail as a possible compromised plugin, account, or API key.

Prevent the problem from returning

  • Keep WordPress and the mailer plugin updated.
  • Monitor provider activity, bounces, complaints, and suppression lists.
  • Recheck SPF, DKIM, and DMARC after DNS, hosting, or domain changes.
  • Test a password reset, contact form, registration, and representative order after major updates.
  • Keep staging mail isolated from production recipients.
  • Document the provider, sender, DNS records, credentials owner, and recovery procedure.

For current plugin details, consult the WP Mail SMTP listing, FluentSMTP listing, and each provider’s current documentation. Interfaces, OAuth requirements, quotas, and prices change.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Read next

Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.