STAGING

WordPress email not sending

If your site has stopped sending order confirmations, password resets or contact form messages, stop relying on the web server's built-in mail function and send through a proper email service instead. Install a plugin su

The short answer

If your site has stopped sending order confirmations, password resets or contact form messages, stop relying on the web server’s built-in mail function and send through a proper email service instead. Install a plugin such as WP Mail SMTP or FluentSMTP, connect it to an SMTP or API email service, and send the test email from the plugin’s settings page.

While you set that up, check that the “from” address in your forms and plugins is on your own domain, because mail that pretends to come from somewhere else is often thrown away before anyone sees it.

What it means

WordPress does not have its own mail system. When a plugin wants to send a message, it hands it to a small function called PHP mail(), which simply asks the web server to pass the message along. The web server has no login, no reputation and no record of whether the message arrived. It fires the email into the internet and forgets about it.

That worked well enough years ago. Today, mailbox providers such as Gmail, Outlook and Yahoo want proof that a message was authorised by the domain it claims to come from. A message sent straight from a web server usually cannot offer that proof, so it is rejected, quietly deleted or pushed into spam.

From where you sit it looks like WordPress is broken. In most cases the site did try to send. The message was simply refused on the way to the inbox. Fixing it means sending through a service that can prove the message is yours, and making sure your domain’s DNS records back that up.

Common causes

  • Sending through PHP mail() with no authentication. This is the default for every WordPress site and the single most common reason messages vanish. Receiving servers treat unauthenticated mail from a web server as suspicious.
  • Missing or wrong SPF and DKIM records. SPF, a DNS record that lists which servers may send email for your domain, and DKIM, a digital signature attached to each message, tell receivers your mail is genuine. If they are missing or do not match the service that actually sent the message, delivery suffers.
  • A “from” address that is not on your domain. Many contact form plugins are set to send from the visitor’s email address. Receivers see mail claiming to be from gmail.com arriving from your server and reject it.
  • A broken or misconfigured SMTP plugin. An expired password, a changed API key or a provider that has suspended the account will stop every message without an obvious error on the site.
  • A plugin or theme conflict. Less common, but a plugin that filters outgoing mail, or a security plugin blocking the request, can stop messages from leaving at all.

How to fix it

  1. Confirm what is happening. Install a logging plugin (WP Mail SMTP and FluentSMTP both include an email log) and trigger a test, for example a password reset for your own account. If the log shows the message was handed off, the problem is delivery. If nothing appears in the log, a plugin on the site is blocking it. This step is the same on any host.
  2. Pick an email sending service. Choose a transactional email service that offers SMTP or an API. Your existing email provider (Google Workspace or Microsoft 365) can work for low volumes; a dedicated service is better for shops that send a lot of mail. Create an account and generate the SMTP credentials or API key.
  3. Install and connect the plugin. In WordPress go to Plugins > Add New Plugin, search for WP Mail SMTP or FluentSMTP, install and activate it. Open its settings page, choose your service as the mailer, and paste in the credentials.
  4. Set the “from” details. In the same settings page set the from email to an address on your own domain, such as hello@yourbusiness.com, and tick the option to force this from address for every plugin. Set a friendly from name. Do not use the visitor’s address as the from address; put that in Reply-To instead.
  5. Send the test email. Every SMTP plugin has an Email Test tab. Send one to an address on a different provider (a personal Gmail address works) and check the inbox and the spam folder.
  6. Add the DNS records your service asks for. The sending service will show you an SPF value and one or more DKIM records. Add them in your DNS. If your DNS is managed in the management console (Plesk with WP Toolkit), open Websites & Domains, choose your domain, then DNS Settings. If your DNS is at your domain registrar or Cloudflare, add them there. Keep one SPF record only, and keep it under the 10 DNS lookup limit, or it will fail entirely.
  7. Check your forms. Open each form’s notification settings (for example in Contact Form 7 or WPForms) and make sure the from address is on your domain and the submitter’s address is used only for Reply-To.
  8. If messages still fail, deactivate plugins one at a time on a staging copy to find a conflict, and ask your host to check the outgoing mail log for bounces.

On WP Alpha

Email delivery depends on your DNS and the service you send through, so the steps above are the same on WP Alpha as anywhere else. Where a step touches the management console (Plesk with WP Toolkit), that is where you will find DNS Settings and the Mail section for your domain.

If you get stuck, support is available 24/7 by live chat, with tickets and an urgent escalation form for anything pressing. Support can check your domain’s DNS records with you and VERIFY: whether support can review the server’s outgoing mail log for your domain look for rejected or bounced messages.

Staging sites are one click in WP Toolkit, so you can test a new SMTP plugin or hunt for a plugin conflict on a copy of the site before touching the live one.