Guide WordPress

How to fix WordPress not sending email

The built-in mail function WordPress uses by default is unreliable — the fix is an SMTP plugin configured with real mail server credentials.

Updated 7 min read Intermediate

WordPress sends email — password resets, comment notifications, contact form submissions, order confirmations — through PHP's built-in mail() function by default. That function was never designed for reliable delivery: it has no authentication, and mail sent through it frequently gets rejected outright or filed straight into spam by the receiving server, because it cannot prove it is actually authorised to send for your domain. This is the root cause behind the great majority of "WordPress isn't sending email" reports, and the fix is the same in almost every case: stop using it.

The fix: switch to SMTP

SMTP is the proper mail-sending protocol, and it requires logging in with real mail account credentials, the same way an email client like Outlook does. Mail sent this way carries proper authentication and is far more likely to actually arrive.

  1. Install an SMTP plugin

    Any well-maintained plugin from the official WordPress plugin directory built specifically to route wp_mail() through SMTP will do — this is a well-established category of plugin, not a niche workaround.

  2. Choose a sending method

    The two common options are your own hosting mailbox on the same domain, or a dedicated transactional email service. Either works; a mailbox on your own domain is the simpler starting point for most sites.

  3. Enter the mail server details

    You will need the outgoing mail server hostname, port, and the username and password for a real mailbox on your domain. These are the same details you would enter into any email client — see setting up email on your domain if you have not created a mailbox for this purpose yet.

  4. Set the "from" address to match the mailbox you authenticated with

    Sending as an address you do not actually control, or that does not match the mailbox you logged in with, undermines the authentication you just set up and can get flagged as suspicious by the receiving server.

  5. Send a test email

    Every SMTP plugin includes a test-send feature. Use it and confirm the message actually arrives, checking spam as well as the inbox.

A dedicated mailbox for site mail, kept separate from a personal inbox

Create a mailbox specifically for the site to send from — something like noreply@yourdomain.com — rather than using an owner's personal address. It keeps automated mail traceable and separate, and avoids any risk of a personal inbox's own sending limits interfering with the site.

If mail still is not arriving after switching to SMTP

  • Check the plugin's own send log. Most SMTP plugins keep a record of every attempted send and the exact error returned by the mail server, which is far more specific than "email not working" and tells you precisely what failed.
  • Check SPF, DKIM and DMARC on the sending domain. Mail authenticated by SMTP still needs the domain's own DNS records in order for the receiving server to trust it fully. See why your emails go to spam, and how to stop it for the DNS side of deliverability.
  • Confirm the port and encryption setting match your mail provider. A mismatch here — SSL when the server expects TLS, or the wrong port — causes the connection itself to fail before authentication is even attempted.
  • Check the mailbox password is current. If it was recently changed for that account, the SMTP plugin still has the old one saved until you update it.

Specific symptoms and what they usually mean

SymptomLikely cause
No email at all, even the SMTP test failsIncorrect server, port, or credentials
Test email works, but real site emails do not arriveA plugin or theme calling wp_mail() incorrectly, or a caching layer interfering with the sending process
Email arrives but lands in spamMissing or misconfigured SPF, DKIM or DMARC on the domain
Password reset emails specifically never arriveOften the admin email address on the account is wrong or no longer monitored — check Settings, General

Contact forms specifically

If the problem is limited to a contact form rather than every type of WordPress email, the form plugin may have its own separate mail-sending configuration that also needs pointing at SMTP, or it may be failing validation silently before it ever attempts to send. See making a website contact form deliver reliably for that specific case.

Why this cannot just be left as it is

Password reset emails not arriving is not a minor inconvenience — it is what stands between a locked-out administrator and a database-level password reset, a considerably more involved fix. Setting up SMTP properly once removes an entire category of future problems, and it takes about the same amount of time as troubleshooting a single failed email would.

Related reading