Back to Blog

How to Fix WordPress Not Sending Emails (2026 Guide)

WordPress emails ending up in spam or not arriving at all? Here's why it happens and how to fix it permanently with SMTP.

Your WordPress site is running. Your contact form looks great. But the emails never arrive. No form submissions, no password resets, no WooCommerce order confirmations. If this sounds familiar, you're not alone. It's one of the most common WordPress problems, and it has a straightforward fix.

Why WordPress emails fail

WordPress uses PHP's built-in mail() function to send emails. The problem is that mail() sends emails without any authentication. There's no username, no password, no proof that the email is coming from who it says it's from.

This causes two problems:

  • Hosting providers block it. Most shared hosting and managed WordPress hosts restrict or disable PHP mail() to prevent their servers from being used to send spam. Your email never leaves the server.
  • Receiving servers reject it. Even when PHP mail() works, Gmail, Outlook, and Yahoo see an unauthenticated email from a shared hosting IP address. Without SPF, DKIM, and a recognized sender, the email goes straight to spam or gets silently dropped.

This affects every email WordPress sends: contact form submissions, user registration confirmations, password reset links, WooCommerce orders, and plugin notifications.

The fix: use SMTP instead of PHP mail

SMTP (Simple Mail Transfer Protocol) sends email with proper authentication. Instead of dropping an unsigned email into a queue and hoping it arrives, SMTP connects to a dedicated email server with a username and password, sends from authenticated IP addresses, and includes SPF and DKIM signatures that prove the email is legitimate.

WordPress doesn't have built-in SMTP settings. You need two things:

  1. An SMTP service to actually send the emails (this is what JetEmail provides)
  2. A WordPress SMTP plugin to override PHP mail() and route emails through your SMTP service

Step 1: Set up an SMTP service

You need an email delivery service that gives you SMTP credentials. JetEmail's free tier includes 3,000 emails per month, which is enough for most WordPress sites.

  1. Create a free JetEmail account
  2. Add your sending domain in the dashboard
  3. Add the DNS records shown in your dashboard (SPF and DKIM)
  4. Wait for verification (usually under 5 minutes)

Once verified, your dashboard will show your SMTP credentials: host, port, username, and password.

Step 2: Install the WordPress plugin

JetEmail has a dedicated WordPress plugin that handles SMTP configuration and adds delivery logging so you can see exactly what's happening with your emails.

  1. In your WordPress admin, go to Plugins → Add New
  2. Search for JetEmail
  3. Install and activate the plugin
  4. Go to Settings → JetEmail
  5. Enter the SMTP credentials from your JetEmail dashboard
  6. Click Send Test Email to verify

If you prefer a different plugin, any SMTP plugin that supports custom SMTP servers will work. Popular alternatives include WP Mail SMTP and Post SMTP. The SMTP settings are the same regardless of which plugin you use.

Step 3: Verify it's working

After configuring SMTP, test these common email flows:

  • Contact form: Submit your own contact form and confirm the email arrives in your inbox (not spam)
  • Password reset: Click "Lost your password?" on the WordPress login page and verify the reset email arrives
  • New user registration: If you allow registration, create a test account and check for the welcome email
  • WooCommerce orders: If you run a store, place a test order and verify the order confirmation email

Your JetEmail dashboard shows delivery logs for every email, so you can see whether emails were delivered, bounced, or opened.

Common issues and how to fix them

If emails still aren't working after setting up SMTP, check these:

  • DNS records not verified: Your SPF and DKIM records need to be in place before emails will authenticate properly. Check your JetEmail dashboard for verification status.
  • Port 587 blocked: Some hosting providers block outgoing SMTP ports. Try port 465 with SSL, or contact your host to open port 587.
  • Wrong "From" address: The "From" address in your WordPress settings must match a domain you've verified in JetEmail. Check Settings → General → Email Address.
  • Caching plugin conflict: Some aggressive caching plugins can interfere with SMTP plugins. Try disabling caching temporarily to test.
  • PHP version: Ensure your hosting runs PHP 7.4 or later. Older PHP versions can cause compatibility issues with SMTP plugins.

Why not just use Gmail SMTP?

Using your personal Gmail account for WordPress SMTP is a common suggestion, but it has real limitations. Gmail limits you to 500 emails per day (or 2,000 with Google Workspace). It also requires OAuth authentication which is more complex to set up and can break when tokens expire. For a business site, you want a service designed for application email, not personal email.

A dedicated email delivery service like JetEmail gives you higher sending limits, proper domain authentication (SPF, DKIM, DMARC), delivery analytics, and infrastructure designed specifically for transactional email.

Frequently asked questions

Why is WordPress not sending emails?

WordPress uses PHP's mail() function by default, which doesn't include authentication. Most hosting providers block or limit PHP mail() to prevent spam. Without SMTP authentication, receiving servers have no way to verify your emails are legitimate, so they get flagged as spam or rejected entirely.

How do I test if WordPress is sending emails?

Install an SMTP plugin, go to its settings, and use the built-in "Send Test Email" feature. If you don't have a plugin yet, you can check for email-related warnings under Tools → Site Health in your WordPress dashboard.

Do I need a plugin to fix WordPress emails?

Yes. WordPress doesn't have built-in SMTP settings. You need an SMTP plugin to override the default PHP mail() function and route emails through a proper SMTP server with authentication.

What SMTP settings do I use for WordPress?

SMTP settings vary by provider. For JetEmail, use your regional SMTP endpoint (shown in your dashboard), port 587 with TLS encryption, and your JetEmail credentials. Your dashboard shows the exact settings for your account.

Will fixing SMTP also fix WooCommerce order emails?

Yes. WooCommerce uses the same WordPress email system. Once you configure SMTP for WordPress, all emails sent by WordPress will use it, including WooCommerce order confirmations, shipping notifications, and password resets.

Fix your WordPress emails in 5 minutes. JetEmail's free tier includes 3,000 emails per month.

Dean Walsh, Founder & CEO of JetEmail

Dean Walsh

Founder & CEO

Dean is the founder and CEO of JetEmail, passionate about solving the fundamental problems that make email delivery unreliable and frustrating for developers and businesses. He's committed to building infrastructure that just works, so you can focus on what matters most.

Get WordPress Email Tips

Guides on email deliverability, WordPress troubleshooting, and product updates delivered to your inbox.

We respect your privacy. Unsubscribe at any time.