WordPress doesn’t send emails the way a proper mail server does. By default it uses the server’s PHP mail() function, which most shared hosting providers either disable outright or run with no sender authentication at all. The result: contact form submissions vanish, password reset emails never arrive, and WooCommerce order confirmations go missing — all without WordPress ever throwing an error, since as far as it’s concerned the email was “sent” successfully.
Why This Happens
Even where PHP’s mail() is enabled, emails sent this way carry no SPF record, no DKIM signature, and no reverse DNS match — the three things spam filters check immediately. The email leaves the server successfully from WordPress’s perspective and gets dropped silently before it ever reaches an inbox. SMTP authentication fixes this by sending from a verified sender that hosting providers, Gmail, and dedicated email services all recognise as legitimate.
The Fix
Install WP Mail SMTP from Plugins → Add New and activate it — it replaces WordPress’s default PHP mail() with proper SMTP authentication, no code changes needed. Under WP Mail SMTP → Settings → Mailer, Gmail/Google Workspace via OAuth is the quickest setup for most sites: no password stored in WordPress, just an authorisation click. A hosting provider’s own SMTP is usually findable under its control panel’s Email Settings; Brevo, Mailgun, or SendGrid are purpose-built for transactional volume and worth it for a busier WooCommerce store; “Other SMTP” covers anything else with a host, port, username, and password.
For Gmail via OAuth: select Google/Gmail as the mailer, click “Allow plugin to send emails using your Google account,” and complete the authorisation — no password or app password needed for this path. For a credentials-based connection instead, use host smtp.gmail.com, port 587, TLS encryption, and an App Password generated under Google Account → Security → App passwords (requires 2FA already enabled). Then run WP Mail SMTP → Tools → Email Test to an address you can actually check — if it arrives, contact forms, order confirmations, and password resets are all routing through the authenticated connection now. A failed test shows a specific error; a wrong SMTP port, a missing app password, or a host firewall blocking outbound port 587 are the usual causes. Use 587 (TLS) or 465 (SSL) — most hosts block outbound port 25 outright. See setting up SMTP in WordPress for the deeper configuration walkthrough.
After it’s working, fix the From Name and From Email too — WordPress defaults to “WordPress” as the sender and a generic noreply@ address, both worth changing to the site’s actual name and a real address recipients will recognise. If a Google Workspace account exists on the site’s own domain, use that as the From Email rather than a personal Gmail — the sending reputation ties to the domain that way. Send a real test submission through the contact form after configuring SMTP, too — form plugins don’t warn when notifications silently fail; the form still appears to submit fine either way.
The Sending-Limit Detail Most Guides Get Slightly Wrong
Personal Gmail accounts cap out at 500 recipients per day, Google Workspace at 2,000 — figures that get quoted often, but usually without two details that actually matter in practice. First, it’s not a simple midnight reset: Gmail tracks this as a rolling 24-hour window, counting every address across To, Cc, and Bcc on every message (one email to 40 people counts as 40 toward the cap, not one), so the limit continuously refreshes as older sends age out rather than resetting at a fixed time. Second, and easy to get caught by: a brand-new Google Workspace account doesn’t get the full 2,000-recipient limit the moment it’s paid for — Google requires the domain to have paid at least $100 cumulative in Workspace fees, and up to 75 days to pass since crossing that threshold, before the higher limit applies. Until then, even a paid Workspace account is capped at the same 500 a free Gmail account gets. Worth knowing before assuming a fresh Workspace signup immediately unlocks the higher volume.
For a small business or informational site, Gmail or a host’s own SMTP is genuinely enough. For a WooCommerce store or membership site sending real volume — especially one that would bump into either of the caps above — a dedicated transactional service like Brevo, Mailgun, or Amazon SES is the better fit; they also provide delivery logs and bounce tracking, which makes diagnosing a missing email far easier than troubleshooting blind through WordPress alone. Getting email delivery genuinely reliable is part of the same setup discipline covered in the step-by-step guide to building a WordPress website.

Etienne Basson works with website systems, SEO-driven site architecture, and technical implementation. He writes practical guides on building, structuring, and optimizing websites for long-term growth.