Maintenance

WordPress Not Sending Emails? How to Fix It With SMTP

Password resets, WooCommerce order emails or form enquiries not arriving? Why WordPress emails fail and how to fix them with SMTP or a transactional service.

WordPress Not Sending Emails? How to Fix It With SMTP
On this page
  1. Why WordPress emails go missing
  2. First, confirm it's really an email problem
  3. The fix: SMTP or a transactional email service
  4. How to set it up
  5. Password resets, orders and forms: specific checks
  6. Keep website email working
Key takeaways
  • WordPress sends email through the server's basic mail function by default, so password resets, order emails and form alerts often land in spam or vanish.
  • Send through an authenticated SMTP mailbox or a transactional email service, with SPF, DKIM and DMARC set up for your domain.
  • Use a From address on your own domain, put visitors in Reply-To, keep an email log and test forms and orders regularly.

A customer places an order but never gets a confirmation. You click "Lost your password?" and the reset link never arrives. Your contact form says "Thank you", but no enquiry reaches your inbox. When WordPress emails go missing, the website itself is usually fine; the problem is how it sends email. Here's why it happens and how to fix it properly with SMTP or a transactional email service.

Why WordPress emails go missing

By default, WordPress hands every email to your web server's built-in mail function. That's simple, but unreliable:

  • No authentication. The server usually isn't listed in your domain's SPF record or signing with DKIM, so Gmail, Outlook and others treat the email as suspicious and send it to spam or reject it.
  • Hosts restrict it. Many hosts limit or disable server mail to stop spam, sometimes with low hourly sending limits.
  • Shared reputation. On shared hosting, your emails leave from a server that many other sites also use.
  • The wrong "From" address. WordPress sends from wordpress@yourdomain by default, an address that often doesn't exist, and some form plugins send "from" the visitor's own email, which fails authentication checks.
  • Email hosted elsewhere. If your mailbox is on Google Workspace, Zoho Mail or Microsoft 365 but your hosting thinks it handles mail locally, emails to your own domain may never leave the server. In cPanel, this is the Email Routing setting.

First, confirm it's really an email problem

  1. Check the source. Does the order exist in WooCommerce? Is the enquiry saved in your form plugin's entries? If yes, the site works and only the email failed.
  2. Check spam folders and recipients. Confirm notifications go to an inbox someone actually reads: the administration email in Settings → General, the recipients in WooCommerce's email settings, and each form's notification settings.
  3. Send a test to a Gmail address and to your business address. If one arrives and the other doesn't, you've already narrowed down the cause.

If submissions arrive but genuine enquiries are still few, the problem may be the form itself; see why your contact form isn't getting enquiries.

The fix: SMTP or a transactional email service

Instead of the server's mail function, WordPress should send through a proper email service that signs in with credentials and is authorised to send for your domain. An SMTP plugin makes this switch for every email the site sends, whichever plugin created it.

OptionGood forWatch out for
Your business mailbox over SMTP (Google Workspace, Zoho Mail, Microsoft 365 or host email)Brochure sites with a few form emails a dayMailbox sending limits, and the connection breaking when passwords or security settings change
A transactional email service (for example Amazon SES, Brevo, Mailgun, Postmark or ZeptoMail)Online stores, membership sites and busy formsDomain verification, DNS records and account approval before you can send
Your host's SMTP serverSimple sites on good hostingHourly limits and shared server reputation

Transactional services are built for automated emails like order confirmations and password resets, with delivery logs and bounce tracking. Plans and free allowances change, so check current pricing. Popular SMTP plugins include WP Mail SMTP, FluentSMTP and Post SMTP; use only one at a time.

How to set it up

  1. Pick a From address on your domain, such as orders@ or info@yourbusiness.com, and a clear From name.
  2. Verify your domain with the service by adding the SPF and DKIM records it gives you, plus a DMARC record if you don't have one; see SPF, DKIM and DMARC explained. Keep a single SPF record that includes every sender.
  3. Install one SMTP plugin and enter the service's details: server, port (usually 587 with TLS, or 465 with SSL), and a username and password or API key. Many plugins can also connect to popular services by API, which avoids blocked ports.
  4. Force the From address so every plugin sends from the same verified address.
  5. Send test emails to Gmail and Outlook addresses and check they land in the inbox. In Gmail, "Show original" shows whether SPF, DKIM and DMARC passed.
  6. Turn on email logging, either in the SMTP plugin or with a separate log plugin, so you can see what the site sent and whether anything failed.

With Gmail or Google Workspace, Google no longer accepts a plain password from most apps, so use the plugin's Google sign-in option or an app password. If the connection times out, your host may block outgoing SMTP ports; ask them, or switch to an API connection.

Password resets, orders and forms: specific checks

Password reset emails

If you're locked out because the reset email never comes, another administrator can reset your password from the Users screen, or a developer can set one through the hosting database. Fix sending before you change the administration email address, too: WordPress emails the new address to confirm the change, and that email needs to arrive.

WooCommerce order emails

In WooCommerce → Settings → Emails, check each email is enabled and the "New order" recipient is correct. WooCommerce sends the new order email when an order moves to processing, on-hold or completed, so an order stuck in "Pending payment", for example because the gateway never confirmed a UPI or card payment, won't trigger it. For branding and content, see customising WooCommerce order emails.

Contact form notifications

Set the From address to your own domain and put the visitor's email in the Reply-To field, so you can still reply with one click. Make sure entries are saved in the dashboard too, and consider a second alert such as WhatsApp or a Google Sheet, so one failed email never means a lost lead.

Keep website email working

  • Check the email log and send a test form entry every month
  • Update the SMTP settings whenever the mailbox password, app password or API key changes
  • Copy all email DNS records (MX, SPF, DKIM and DMARC) when changing hosting or nameservers
  • Watch sending limits as your store grows, especially before festival sales
  • If you get bounces for emails you never sent, investigate straight away; see website sending spam emails

Need reliable website email without the trial and error? I can set up SMTP, DNS records and testing as part of WordPress maintenance, or from the start on a new build through WordPress website development.

Need help with your website?

I'm Sameer, a freelance WordPress developer building fast, SEO-friendly websites since 2020. Tell me what you need and I'll reply with a plan and a fixed quote within 24 hours.

Found this useful? Share it:
Contact

Let's build your next website

Available for freelance projects, agency white-label work and long-term maintenance. Feel free to pass this along to your team or company.

Your details are emailed to me, then WhatsApp opens so we can chat right away.

Chat now