How to Fix WordPress Not Sending Email (SMTP Setup Guide)

How to Fix WordPress Not Sending Email (SMTP Setup Guide)

WordPress email failures are almost always caused by WordPress using PHP’s built-in mail function (wp_mail), which most hosting providers restrict or block. The fix is to configure WordPress to send emails through a proper SMTP server instead. The WP Mail SMTP plugin handles this — install it, connect it to an email service (Gmail, SendGrid, Mailgun, or your hosting provider’s SMTP server), and your WordPress emails will deliver reliably.

When WordPress email fails, the impact is wider than most people realise. Contact form submissions never reach you — potential customers submit enquiries that disappear into the void. Password reset emails do not arrive — users cannot recover their accounts. WooCommerce order confirmations are not sent — customers do not receive purchase receipts, shipping notifications, or account details. Comment notifications, user registration emails, plugin alerts, and security warnings all fail silently.

The worst part is that WordPress does not tell you when emails fail. The contact form shows “Message sent successfully.” The password reset page says “Check your email.” WooCommerce marks the order as “Processing.” But the email never actually sends — and nobody knows until someone complains that they never received it.

Why WordPress Emails Fail

PHP mail is unreliable. By default, WordPress sends emails using PHP’s mail() function, which hands the email to your server’s local mail system. Many hosting providers — especially shared hosting — restrict or disable this function because it is frequently abused by spammers who compromise WordPress sites and use them to send millions of spam emails. Even when PHP mail is enabled, emails sent this way are often rejected by recipients’ email providers because they lack proper authentication (SPF, DKIM, DMARC).

Server IP is blacklisted. On shared hosting, your server’s IP address is shared with hundreds of other sites. If any one of those sites sends spam, the entire server’s IP can be blacklisted — causing legitimate emails from your site to be rejected or sent to spam folders.

Missing email authentication records. Modern email delivery requires SPF (Sender Policy Framework), DKIM (DomainKeys Identified Mail), and DMARC (Domain-based Message Authentication) DNS records. These records tell receiving email servers that emails claiming to come from your domain are legitimate. Without them, your emails are treated as suspicious and may be blocked or spam-filtered.

Step 1: Install WP Mail SMTP

WP Mail SMTP is the most popular WordPress SMTP plugin with over 3 million active installations. It reconfigures WordPress to send emails through a proper SMTP server instead of PHP mail.

Go to Plugins → Add New. Search for “WP Mail SMTP.” Install and activate the plugin by WPForms. After activation, you are prompted to run the setup wizard — follow it, as it walks you through the SMTP configuration process step by step.

Step 2: Choose an Email Service

WP Mail SMTP supports multiple email services. Here are the best options, depending on your needs:

Gmail / Google Workspace SMTP (Best for Low-Volume Sites)

If you have a Gmail or Google Workspace account, you can use Google’s SMTP servers to send your WordPress emails. This is free for up to 500 emails per day (Gmail) or 2,000 emails per day (Google Workspace). Google’s servers have excellent deliverability because Google’s IP addresses are trusted by virtually all email providers.

In WP Mail SMTP, select “Google / Gmail” as the mailer. The plugin will guide you through creating a Google API application and authenticating via OAuth 2.0. This is more secure than entering your Gmail password directly (which Google now blocks for most accounts anyway).

SendGrid (Best for High-Volume and Transactional Email)

SendGrid is a dedicated email delivery service. Their free tier allows 100 emails per day — sufficient for small WordPress sites. Paid plans start at $19.95/month for 50,000 emails. SendGrid provides dedicated IP addresses (no shared-IP blacklisting risk), detailed delivery analytics, and enterprise-grade deliverability.

In WP Mail SMTP, select “SendGrid” as the mailer. Create a SendGrid account, generate an API key, and enter it in the plugin settings.

Mailgun (Best Value for Medium-Volume Sites)

Mailgun offers flexible pay-as-you-go pricing and a trial that includes 5,000 emails. Their API-based delivery is fast and reliable. In WP Mail SMTP, select “Mailgun” as the mailer and enter your Mailgun API key and domain.

Your Hosting Provider’s SMTP Server

Most hosting providers offer SMTP server access as part of your hosting plan. Check your hosting control panel for SMTP settings — typically found under “Email Accounts” in cPanel. In WP Mail SMTP, select “Other SMTP” and enter your host’s SMTP server address (e.g., mail.yourdomain.com), port (usually 465 for SSL or 587 for TLS), your email account username, and your email account password.

This is the quickest option that does not require a third-party service, but deliverability depends on your host’s email reputation. If your hosting provider’s IP addresses have poor reputation (common on shared hosting), your emails may still land in spam.

Step 3: Configure DNS Records (SPF, DKIM, DMARC)

After configuring your email service, set up the DNS authentication records that prove your emails are legitimate.

SPF (Sender Policy Framework): Add a TXT record to your domain’s DNS that specifies which mail servers are authorised to send email on behalf of your domain. Your email service (SendGrid, Mailgun, Google) will provide the specific SPF record to add. Typically it looks like: v=spf1 include:sendgrid.net ~all (for SendGrid) or v=spf1 include:mailgun.org ~all (for Mailgun).

DKIM (DomainKeys Identified Mail): Add a TXT record that contains a public key. Your email service signs each outgoing email with a private key. Receiving servers use the public key in your DNS to verify the signature — proving the email was not tampered with in transit. Your email service will provide the exact DKIM record to add.

DMARC (Domain-based Message Authentication): Add a TXT record that tells receiving servers what to do with emails that fail SPF or DKIM checks. A basic DMARC record looks like: v=DMARC1; p=none; rua=mailto:[email protected]. Start with p=none (monitor only) and move to p=quarantine or p=reject after verifying your legitimate emails pass authentication.

Step 4: Send a Test Email

WP Mail SMTP includes a built-in test email feature. Go to WP Mail SMTP → Tools → Email Test. Enter your email address and click “Send Email.” Check your inbox (and spam folder) for the test email. If it arrives, your SMTP configuration is working correctly.

If the test email fails, WP Mail SMTP displays the specific error message from the SMTP server. Common errors include authentication failure (wrong username/password or expired API key — verify your credentials), connection refused (the SMTP port is blocked by your hosting provider’s firewall — try a different port, usually 587 or 465), SSL/TLS error (the SMTP connection requires SSL but your server does not support the required encryption — check your encryption settings in WP Mail SMTP), and timeout (your server cannot reach the SMTP server — check if outbound connections to the SMTP provider are allowed by your hosting firewall).

Step 5: Test Real-World Email Scenarios

A successful test email is a good sign, but verify that actual WordPress emails work correctly in real-world scenarios. Test a contact form submission and verify the notification email arrives. Test a password reset (log out, click “Lost your password?” and verify the reset email arrives). If you run WooCommerce, place a test order and verify the order confirmation email is sent. Test a new user registration and verify the welcome email arrives.

Check each email to ensure the “From” name and address are correct, the content is properly formatted, and the email does not land in spam.

Step 6: Set Up Email Logging (Recommended)

WP Mail SMTP Pro includes email logging — a record of every email WordPress sends, including whether it was delivered or failed. This is invaluable for diagnosing delivery issues, verifying that important emails (like WooCommerce orders) are actually sending, and providing proof of delivery when someone claims they did not receive an email.

If you are using the free version of WP Mail SMTP, the WP Mail Log plugin provides standalone email logging functionality.

Common Email Issues After SMTP Setup

Emails land in spam despite SMTP setup. Verify your SPF, DKIM, and DMARC DNS records are correctly configured. Use a tool like Mail Tester (mail-tester.com) — send a test email to the address they provide, and they will score your email’s deliverability and identify specific issues.

“From” address does not match your domain. Ensure the “From Email” in WP Mail SMTP settings matches your domain. Emails sent from [email protected] but claiming to be from [email protected] can trigger spam filters if SPF/DKIM are not configured for both addresses.

WooCommerce emails work but contact form emails do not (or vice versa). This usually means one plugin is overriding the “From” address differently from the other. In WP Mail SMTP settings, enable “Force From Email” to ensure all WordPress emails use the same authenticated sender address regardless of which plugin initiates the email.

Frequently Asked Questions

Do I need a paid email service or is free sufficient?

For most WordPress sites (blogs, small business sites, portfolio sites), a free option is sufficient. Gmail SMTP handles up to 500 emails per day for free. For WooCommerce stores or sites with large contact form volumes, a paid service (SendGrid, Mailgun) provides higher limits, better deliverability, and delivery analytics.

Can I use my personal Gmail account for SMTP?

Yes, but it is better to use a Google Workspace account with your domain (e.g., [email protected]) rather than a personal @gmail.com address. Emails from your own domain look more professional and can be authenticated with domain-specific SPF and DKIM records. Google Workspace costs $6/user/month.

My hosting provider says PHP mail is fine. Do I still need SMTP?

We strongly recommend SMTP regardless. PHP mail may work sometimes, but it is inherently less reliable than authenticated SMTP because it lacks DKIM signing (emails cannot be cryptographically verified), it uses the server’s shared IP (which may be blacklisted), and failures are silent (no error reporting, no delivery tracking). SMTP solves all three of these problems.

I set up SMTP but old emails are still failing. Why?

WP Mail SMTP changes how future emails are sent. It cannot fix emails that were already lost. If you suspect emails were failing before SMTP was configured, notify affected users (e.g., resend WooCommerce order confirmations) and set up email logging to verify all future emails are delivering successfully.

Need Expert Help? Let WP Ministry Handle It

Email deliverability issues affect every aspect of your WordPress site — from customer communication to security alerts. Our maintenance team configures SMTP, sets up DNS authentication records, and verifies email delivery as part of our onboarding process for every care plan client.

Call (901) 249-0909 for immediate assistance, or request a one-time fix starting at $199.

View our care plans →

Related Articles

How to Set Up WooCommerce Email Notifications Properly

WordPress Maintenance Checklist: Daily, Weekly, Monthly Tasks

The Ultimate WordPress Security Guide (2026)

Like this article?

Share on Facebook
Share on Twitter
Share on Linkdin
Share on Pinterest

Leave a comment