WP Mail SMTP Not Sending Emails: Why Your WordPress Site Is Silently Broken

Your contact form says "Message sent successfully." Your customer sees the confirmation. But the email never arrives. No bounce. No error. No warning. Your leads are disappearing into a black hole, and nobody knows.

The most dangerous kind of failure

A website that crashes shows you an error. A website that loads slowly shows you a spinner. But a website with broken email shows you absolutely nothing. The form works. The success message displays. The visitor leaves, confident their message was received. And on your end — silence. The email was never sent.

WP Mail SMTP is the most popular WordPress email plugin, with over five million active installations. It replaces WordPress's unreliable default mail() function with a proper SMTP connection to services like Gmail, SendGrid, Mailgun, or Amazon SES. When it works, it works brilliantly. When it stops working, it stops silently.

There is no dashboard warning. There is no admin notification. There is no banner saying "Email delivery has stopped." WordPress continues to accept form submissions, generate order confirmations, and process password resets — it just cannot deliver any of them. Your WooCommerce customers never receive their order emails. Your leads never get a response because you never saw their enquiry. Password reset links never arrive.

You only find out when a customer complains. Or when you notice that you have not received a contact form submission in two weeks and wonder if business is just slow. It is not slow. Your email has been broken the entire time.

What causes WP Mail SMTP to stop sending

WP Mail SMTP connects WordPress to an external email service. That connection has multiple components, and any one of them failing breaks email delivery completely. Here are the causes, ordered by how frequently they occur.

1. SMTP credentials have expired or been revoked

SMTP connections require authentication — a username and password, or an API key. These credentials can expire, be rotated, or be revoked without notice. If you use your hosting provider's SMTP server, they might reset credentials during a server migration. If you use a third-party service, they might expire API keys after a certain period or revoke them for exceeding sending limits.

When the credentials fail, WP Mail SMTP cannot authenticate with the mail server. Every email it tries to send is rejected at the authentication step. But WordPress does not know this — it calls wp_mail(), the function hands the message to WP Mail SMTP, and the plugin fails to connect. The form still shows "success" because WordPress considers the handoff successful, even though delivery failed.

How to fix it: Go to WP Mail SMTP > Settings in your WordPress dashboard. Check your SMTP credentials. If you use an API key, verify it is still active in your email provider's dashboard. If you use username and password authentication, confirm they are current. Send a test email from the plugin's settings page. Check the WP Mail SMTP plugin page for documentation specific to your email provider.

2. OAuth token refresh failure

If you configured WP Mail SMTP to use Gmail or Google Workspace via OAuth, the plugin stores an access token and a refresh token. The access token expires after one hour. The refresh token is used to obtain a new access token automatically. This works seamlessly — until it does not.

Google can invalidate your refresh token for several reasons: you changed your Google password, you revoked access in your Google security settings, Google performed a security review on your account, or Google updated its OAuth policies. When the refresh token is invalidated, WP Mail SMTP cannot obtain a new access token and email delivery stops completely.

The plugin does not alert you when this happens. There is no email notification (because the email system is the thing that is broken). There is no dashboard warning unless you navigate to the WP Mail SMTP settings page and notice the OAuth status has changed. The failure is completely silent.

How to fix it:Go to WP Mail SMTP > Settings and look at the OAuth connection status. If it says disconnected or shows an error, click the button to re-authorise. You will be redirected to Google to grant access again. Once re-authorised, send a test email to confirm delivery works. Consider switching from Gmail OAuth to a dedicated transactional email service for critical business email.

3. Port blocking by hosting provider

SMTP uses specific ports to connect to the mail server: port 25 (legacy, often blocked), port 465 (SSL), port 587 (TLS, the most common), or port 2525 (alternative). Many hosting providers block outbound connections on some or all of these ports to prevent spam.

This blocking can happen without warning. Your hosting provider might change their firewall rules during a security update. A shared hosting provider might block SMTP ports for all tenants because one tenant was sending spam. Your email was working yesterday, and today the port is closed.

How to fix it: Check which port WP Mail SMTP is configured to use. Contact your hosting provider and ask which SMTP ports are open. If port 587 is blocked, try 465 or 2525. Some hosting providers require you to explicitly request SMTP port access. If your host blocks all SMTP ports, switch to an email provider that offers an HTTP API instead of SMTP — services like SendGrid, Mailgun, and Postmark all support API-based sending that does not require SMTP ports.

4. Conflict with other mail plugins

If you have more than one email plugin active — WP Mail SMTP and Fluent SMTP, or WP Mail SMTP and Post SMTP, or any combination — they can conflict by both trying to hook into WordPress's wp_mail() function. The result is unpredictable: emails might be sent twice, sent through the wrong service, or not sent at all.

Contact form plugins like Contact Form 7, WPForms, and Gravity Forms also interact with the mail system. A conflict between your form plugin and your SMTP plugin can cause form submissions to fail silently while other WordPress emails (like user registration confirmations) continue to work.

How to fix it: Deactivate all email-related plugins except WP Mail SMTP. Send a test email. If it works, reactivate your other plugins one by one. After each activation, send another test email. When the test fails, you have found the conflicting plugin. You may need to configure the form plugin to use the default WordPress mail function and let WP Mail SMTP handle the actual delivery.

5. Sending limits exceeded

Every email provider enforces sending limits. Gmail allows 500 emails per day (2,000 for Google Workspace). SendGrid free tier allows 100 per day. Even paid plans have hourly and daily caps. If your site exceeds these limits — which can happen if you have a sudden spike in form submissions, a WooCommerce sale, or a plugin that triggers excessive notification emails — the provider rejects further emails until the limit resets.

Once again, WP Mail SMTP does not surface this error prominently. The emails fail, but the forms continue to show success messages.

How to fix it:Check your email provider's dashboard for sending statistics and error logs. If you are hitting limits, upgrade your plan or switch to a provider with higher limits. Review your WordPress notifications to reduce unnecessary emails — do you really need an email for every comment, every login, every plugin update? Disable notifications you do not need to preserve your sending quota for emails that matter.

6. DNS records changed or missing

Email providers require DNS records to verify your domain. SPF, DKIM, and DMARC records tell receiving servers that your email provider is authorised to send email on behalf of your domain. If these DNS records are removed, changed, or expire — which can happen during a DNS migration or a domain registrar change — your emails start failing delivery.

The emails might still be "sent" from WP Mail SMTP's perspective, but they are rejected or filtered as spam by the receiving server. Your forms show success. The email provider accepted the message. But the recipient never sees it.

How to fix it: Check your DNS records in your domain registrar or DNS provider. Verify that SPF, DKIM, and DMARC records match what your email provider requires. Most email providers have a DNS verification tool in their dashboard that checks your records automatically.

Why this is worse than a website crash

When your website goes down, everyone knows immediately. Visitors see an error page. Monitoring tools fire alerts. You get notifications. The problem is obvious and urgent.

When your email breaks, nobody knows. The website keeps working. Forms keep accepting submissions. Customers keep seeing success messages. The problem is invisible, and it can persist for days or weeks before anyone notices. By then, you have lost an unknown number of leads, frustrated an unknown number of customers, and damaged trust with an unknown number of people who think you are ignoring them.

Contact Form 7 and other form plugins are particularly vulnerable because they show a green success message to the visitor regardless of whether the email was actually delivered. The visitor walks away satisfied. You never receive their message.

How to detect broken email delivery with Uptrue

Uptrue's heartbeat and keyword monitoring can detect when your WordPress email system stops working — even when everything else on your site looks perfectly fine.

Step 1: Set up a heartbeat monitor on your contact form

  1. Sign up at uptrue.io/signup (free plan available)
  2. Click Add Monitor from your dashboard
  3. Select Heartbeat as the monitor type
  4. Configure your contact form (or a test form) to send a ping to the Uptrue heartbeat URL after successful email delivery
  5. Set the expected interval — for example, every 24 hours
  6. If the heartbeat ping does not arrive within the expected window, Uptrue alerts you

A heartbeat monitor works on the principle of "if I do not hear from you, something is wrong." You configure a scheduled task or a monitoring form that sends a ping to Uptrue after successfully delivering an email. If WP Mail SMTP breaks and emails stop sending, the ping stops arriving, and Uptrue alerts you.

Step 2: Set up a keyword monitor on your form confirmation page

  1. Click Add Monitor again
  2. Select Keyword as the monitor type
  3. Enter the URL of your contact form page
  4. Set the keyword to the text of your form — a label like "Send Message" or "Get in Touch"
  5. Set the check type to "Page must contain"
  6. Set the interval to 5 minutes

This does not detect email failure directly, but it ensures your contact form page is loading correctly. If a plugin conflict crashes the form page entirely — replacing it with an error or a blank page — this monitor catches it. Combined with the heartbeat monitor, you cover both the form display and the email delivery.

Step 3: Set up keyword monitoring to detect error messages

  1. Add a Keyword monitor for your contact form page
  2. Set the keyword to "There has been a critical error"
  3. Set the check type to "Page must NOT contain"
  4. Set the interval to 1 minute

If a plugin conflict between WP Mail SMTP and another plugin causes a PHP fatal error, your contact page might display the WordPress critical error message instead of your form. This monitor catches that scenario immediately.

Step 4: Monitor your WooCommerce order flow (if applicable)

If you run a WooCommerce store, broken email means customers do not receive order confirmations, shipping notifications, or download links. Set up monitors on:

  • Your checkout page — keyword monitor for the form elements
  • Your order confirmation page — keyword monitor for expected content
  • Your account page — HTTP monitor for uptime

Step 5: Configure alerts that actually reach you

The irony of email monitoring is that if your email is broken, email alerts about the breakage might also be unreliable. Use multiple alert channels:

  • Slack — instant notification, not dependent on your WordPress email
  • Microsoft Teams — same benefit, different platform
  • Webhook — send alerts to PagerDuty, Opsgenie, or a custom endpoint
  • Email — Uptrue sends from its own servers, not from your WordPress site, so even if your site email is broken, Uptrue alerts still arrive

Check your WordPress site health right now

Instant health score across uptime, SSL, DNS, security headers, and performance. See your vulnerabilities before they become outages.

Check Your Website Score

Preventing WP Mail SMTP failures

You cannot prevent every failure, but you can reduce the chances dramatically.

Use a dedicated transactional email service

Gmail and hosting SMTP are not designed for automated email. Services like SendGrid, Mailgun, Postmark, and Amazon SES are built specifically for this purpose. They offer higher sending limits, better deliverability, detailed delivery logs, and dedicated support for transactional email. They cost money, but losing leads costs more.

Send a test email weekly

Go to WP Mail SMTP > Tools > Email Test every week. Send a test email to yourself. Verify it arrives. This takes 30 seconds and catches credential expiry, OAuth failures, and port blocks before they affect real submissions. Better yet, set a calendar reminder so you do not forget.

Check your email provider dashboard regularly

Every email provider has a dashboard showing delivery stats, bounce rates, and errors. If your delivery rate drops or your bounce rate spikes, something is wrong. Most providers also send email alerts about account issues — make sure these go to an address you actually check.

Only run one email plugin

Do not install WP Mail SMTP alongside Fluent SMTP, Post SMTP, or Easy WP SMTP. Pick one and deactivate the others. Multiple email plugins hooking into wp_mail() is a guaranteed conflict waiting to happen.

Set up DNS records properly from the start

When configuring your email provider, add all required DNS records — SPF, DKIM, and DMARC — and verify them in the provider's dashboard. Document which records you added and where, so if you change DNS providers in the future, you know exactly what needs to be recreated.

Stop finding out from your customers

Broken email is the silent killer of WordPress businesses. No error message. No visible symptom. No alert from WordPress. Your forms work perfectly — they just do not deliver the emails they promise to send.

By the time a customer complains that they never received a reply, you have already lost every lead that submitted a form since the failure started. You do not know how many. You do not know who they were. They are gone.

Uptrue's heartbeat monitoring detects when expected pings stop arriving. Keyword monitoring confirms your forms are loading correctly. Combined, they catch both visible crashes and invisible email failures. One minute checks. Alerts on Slack, Teams, email, and webhook. From outside your server, so WordPress email failures do not affect your monitoring.

Detect silent email failures before your customers do

Free plan available. Heartbeat monitoring for email delivery. Keyword monitoring for form pages. No credit card required.

Frequently asked questions

Why did WP Mail SMTP stop sending emails without any error?

WP Mail SMTP can fail silently for several reasons: your SMTP credentials expired or were revoked, your OAuth token expired and could not auto-refresh, your hosting provider started blocking the SMTP port, another plugin is conflicting with the mail function, or your sending provider suspended your account for exceeding limits. WordPress does not display email failures to visitors or admins in the dashboard — the form shows a success message even when the email was never sent.

How do I know if my WordPress emails are actually being delivered?

You cannot know from within WordPress alone. The wp_mail() function returns true if it hands the message to the server, not if the email actually reaches the recipient. To verify delivery, send a test email from WP Mail SMTP settings, check your SMTP provider dashboard for delivery logs, and set up external monitoring that submits a form on a schedule and verifies receipt. Uptrue heartbeat monitoring can detect when expected pings from your forms stop arriving.

Can I use WP Mail SMTP with Gmail or Google Workspace?

Yes, but Google OAuth tokens expire and require periodic re-authentication. If the token refresh fails — which happens after password changes, security reviews, or Google policy updates — WP Mail SMTP silently stops sending. You will not see an error unless you check the plugin settings page. Google also enforces daily sending limits (500 for Gmail, 2,000 for Workspace) that can cause silent failures on high-volume sites.

Will switching SMTP providers fix the problem permanently?

Switching to a dedicated transactional email service like SendGrid, Mailgun, Postmark, or Amazon SES improves reliability significantly compared to Gmail or your hosting SMTP. These services are designed for automated email and have better deliverability, higher sending limits, and detailed logs. However, credentials can still expire, API keys can still be revoked, and accounts can still be suspended. Monitoring is still essential regardless of which provider you use.