Skip links

WordPress Not Sending Emails? Here’s Why (and the SMTP Fix)

Quick answer: WordPress emails usually fail because, by default, WordPress sends mail through your web server’s built-in PHP mail function — which most receiving inboxes don’t trust, since it isn’t authenticated the way real email services are. The fix is routing your emails through an SMTP connection to a trusted provider (Gmail, Outlook, or a dedicated email service) instead. This post covers why it happens and walks through setting that up with Fluent SMTP, a free plugin that connects to Gmail, Outlook, and others.

Table of contents

Why WordPress emails fail in the first place

WordPress itself doesn’t have its own email system. When a plugin needs to send something — a password reset, a form submission, an order confirmation — it calls a built-in function called wp_mail(), and by default that function simply routes through PHP’s own mail() capability on whatever server your site happens to be hosted on.

That’s where the problem starts. PHP’s mail() function sends email with no authentication attached — no SPF, no DKIM, none of the signals that tell Gmail, Outlook, or any other inbox “this message is really from who it says it’s from.” Most receiving mail servers treat unauthenticated mail from a random web server with deep suspicion, and either reject it outright or drop it straight into spam. On top of that, a lot of hosting providers restrict or disable the PHP mail() function entirely to cut down on spam being sent from their servers, which means the email fails to send at all — often without any visible error on your end.

WordPress itself makes this worse by not telling you when it happens: a successful wp_mail() call only confirms that the request was handed off, not that the message actually reached anyone.

The fix: send through SMTP instead

The reliable fix is to stop relying on your server’s PHP mail function and instead route outgoing email through SMTP — a proper, authenticated connection to an email service that receiving inboxes already trust, like Gmail, Outlook, or a dedicated transactional email provider. That authentication is exactly what’s missing from the default setup, and it’s what gets your emails out of spam and actually delivered.

The easiest way to do this on WordPress is with a free SMTP plugin. We use Fluent SMTP, which connects to more than a dozen providers — including Gmail, Google Workspace, Outlook/Microsoft 365, Amazon SES, SendGrid, and others — through a clean setup wizard, and logs every email your site sends so you can actually see what happened to it.

Step-by-step: setting up Fluent SMTP

  1. Install and activate Fluent SMTP from the WordPress plugin directory, or upload it directly if you’ve downloaded it from WordPress.org.
  2. Open the setup wizard. Once activated, go to Settings → Fluent SMTP in your WordPress dashboard. You’ll see a list of supported providers.
  3. Choose your email provider. Select whichever service you actually want to send through — most small businesses use Gmail/Google Workspace or Outlook/Microsoft 365, since it’s the same email they already use day to day.
  4. Set your default “From” name and email address. This is what recipients will see as the sender, and it should match a real, monitored inbox rather than a placeholder address.
  5. Follow the provider-specific connection steps (below) to authenticate.
  6. Turn on email logging. This is one of Fluent SMTP’s most useful features for troubleshooting — every email gets logged with its status, so if something fails, you can see exactly what happened instead of guessing.
  7. Send a test email from the plugin’s settings page and confirm it arrives, including checking your spam folder the first time.

Worth knowing: installing the plugin is the easy part. Getting the configuration right so it doesn’t quietly conflict with something already sending mail on your site — WooCommerce, a forms plugin, a membership tool — is where most self-managed setups run into trouble, usually without anyone noticing until a customer mentions they never got an order confirmation.

SBWD handle this as a standard part of onboarding every site we manage, testing it against everything else already running before it goes anywhere near production. If you’d rather not risk a silent gap in your contact form or checkout emails, this is something we can just take care of for you.

Connecting Gmail or Google Workspace

Gmail and Google Workspace no longer accept a simple username-and-password connection for this kind of integration — both now require a more secure OAuth connection, which sounds more involved than it is:

  1. In Fluent SMTP, select Gmail / Google Workspace as your provider.
  2. Go to Google Cloud Console and create a new project (a free Google account is all that’s needed — this doesn’t require a paid Google Cloud plan for typical sending volumes).
  3. Inside that project, enable the Gmail API.
  4. Create OAuth credentials for the project, and copy the Client ID and Client Secret it generates.
  5. Paste those credentials into the Fluent SMTP setup screen, then follow the prompt to authorize the connection with your Gmail or Google Workspace account.
  6. Send a test email to confirm the connection works.

The whole process typically takes 15-25 minutes the first time. It’s more setup than the old password-based method, but the trade-off is real: your email credentials are never stored directly in the WordPress database, which is a meaningful security improvement.

Worth knowing: if your Gmail account sits inside a Google Workspace organization, an admin may need to approve third-party app access before this connection works at all — something that catches a lot of self-managed setups off guard partway through. Getting the OAuth scopes right matters too: too broad, and the connected app has more access to the account than it should.

SBWD handle this setup routinely for clients, including the organization-level approval step when it applies, so it’s configured correctly and securely the first time. Happy to take this off your plate if you’d rather not navigate Google Cloud Console yourself.

Connecting Outlook or Microsoft 365

Outlook and Microsoft 365 follow the same OAuth-based approach:

  1. In Fluent SMTP, select Outlook / Microsoft 365 as your provider.
  2. Register a new application in the Microsoft Azure portal (a free Microsoft account covers this for standard use).
  3. Generate a Client Secret under Certificates & Secrets within that app registration, and copy both the Application ID and the secret value.
  4. Enter those credentials into the Fluent SMTP setup wizard and authorize the connection with your Outlook or Microsoft 365 account.
  5. Send a test email to confirm delivery.

Worth knowing: Microsoft 365 tenants often require admin consent before an app registration like this is allowed to connect, and getting the permission scope wrong is one of the more common reasons this kind of connection fails partway through or only partly works.

SBWD handle this setup regularly, including the tenant-level approval process when it’s needed. If you’d rather skip the Azure portal entirely, this is something we’re happy to set up for you.

Testing and verifying it actually worked

Once connected, don’t just assume it’s fixed — confirm it:

  • Send a test email directly from Fluent SMTP’s settings screen.

  • Trigger a real email from your site (a test form submission, a password reset) rather than relying only on the plugin’s built-in test.

  • Check Fluent SMTP’s email log to confirm the message shows as sent, not failed.

  • Check the spam folder on the receiving end at least once, since a brand-new sending domain can take a little time to build trust with some inboxes even once properly authenticated.

FAQ

This usually points to a hosting change (a migration, a server update, or a new spam policy on the host’s end) or a plugin conflict, rather than anything wrong with WordPress itself. Checking your email logs is the fastest way to see when it actually stopped and narrow down what changed around that time.

For most small business sites, connecting your existing Gmail, Google Workspace, or Outlook account is enough and keeps costs at zero. Dedicated transactional email services (like Amazon SES or SendGrid) make more sense at higher volume — sites sending large numbers of marketing emails or handling heavy ecommerce order traffic.

Yes, for deliverability specifically. Even a correctly configured PHP mail() function still lacks the authentication that major inboxes increasingly expect. SMTP through an established provider is the more reliable long-term fix, not just a workaround.

The Gmail and Outlook OAuth setup is well documented and manageable for most site owners comfortable following a step-by-step guide. Where it’s worth bringing in help is if email is genuinely business-critical (order confirmations, client communications) and you want it verified as part of a broader setup — checking SPF and DKIM records, testing across multiple recipient providers, and confirming logging is actually catching failures — rather than just confirming one test email arrived.

Need a strong team specialised in WordPress Website Maintenance?

Speak to SBWD today to get a free website security audit to see what security gaps there are to fill.

Explore
Drag