Guides /Email
Email

WordPress Email Not Sending: Fix Deliverability with SMTP

April 5, 20256 min readHostBible Team

WordPress uses PHP's mail() function by default to send emails, password resets, order confirmations, contact form notifications. The problem is that most shared hosting servers block or heavily restrict PHP mail to prevent spam abuse. The result: your WordPress emails silently fail, and you never know it until a customer complains they didn't receive their order confirmation.

Why WordPress Email Fails by Default

PHP's mail() function relies on the local server's mail transfer agent (sendmail or Postfix). On shared hosting, this is often disabled. Even when it works, email sent via PHP has no authentication, no SPF, no DKIM, making it extremely likely to land in spam or be silently dropped by receiving servers.

The fix is to route all WordPress email through a proper SMTP connection. SMTP (Simple Mail Transfer Protocol) authenticates your outbound mail through an account on your mail server or a dedicated sending service, which means the email carries proper credentials and authentication headers. Delivery rates go from unreliable to near-100%.

Choosing an SMTP Plugin

The easiest way to configure SMTP in WordPress is through a plugin. The three most widely used options are WP Mail SMTP (by WPForms), FluentSMTP, and Post SMTP. All three are free, all three work well, the differences are in the interface and which sending providers they support natively.

WP Mail SMTP is the most popular and has native integrations for Gmail/Google Workspace, Sendinblue, Mailgun, SendGrid, Amazon SES, and Postmark. FluentSMTP supports the same providers and is slightly lighter weight. Post SMTP has better diagnostics and email logging if you need to troubleshoot delivery failures. Any of these will solve the core problem.

SMTP Configuration: Using Your Hosting Email

If you want to route WordPress mail through your existing business email account (the simplest option for low-volume sites), use your hosting provider's SMTP credentials. In WP Mail SMTP, select "Other SMTP" and enter these details:

SMTP Host: Your hosting provider's outgoing mail server (e.g., mail.yourdomain.com or what's shown in your cPanel/Plesk email settings)
SMTP Port: 587 (STARTTLS), recommended. Or 465 (SSL).
Encryption: TLS (for port 587) or SSL (for port 465)
Username: Your full email address (e.g., wordpress@yourdomain.com)
Password: The password for that email account

Create a dedicated mailbox for WordPress sending (e.g., noreply@yourdomain.com) rather than using your personal address. This keeps transactional traffic separate from your business inbox and makes it easier to monitor for issues.

SMTP Configuration: Using a Transactional Email Service

For WooCommerce stores or sites that send significant email volume, use a dedicated transactional email service rather than your hosting SMTP. These services are optimised for deliverability, provide detailed logs, and handle bounce/complaint processing automatically.

Postmark: Best deliverability for transactional mail. 100 emails/month free, then $1.50/1,000. SMTP host: smtp.postmarkapp.com, port 587, TLS. Username and password are your Postmark server API token.
SendGrid: 100 emails/day free. SMTP host: smtp.sendgrid.net, port 587, TLS. Username: apikey, Password: your API key.
Mailgun: 100 emails/day free (US region). SMTP host: smtp.mailgun.org, port 587, TLS.

Using Gmail or Google Workspace as SMTP

Many small business owners want to send WordPress email through their Gmail or Google Workspace account. This works, but requires an App Password if 2FA is enabled on the account (which it should be). Go to your Google Account > Security > App Passwords, generate a password for "Mail" on "Other device", and use that as your SMTP password.

Google Workspace SMTP settings: host smtp.gmail.com, port 587 (TLS) or 465 (SSL), username is your full Google Workspace email address, password is the app password. Note that Gmail limits sending to 500 emails/day (personal) or 2,000/day (Workspace). For high-volume WooCommerce stores, use a transactional service instead.

Testing Your SMTP Configuration

After configuration, use the test email feature built into WP Mail SMTP or Post SMTP to send a test message to an address you control. Check that it arrives in the inbox, not spam. Check the email headers (View Original in Gmail) to confirm the message shows DKIM=pass and SPF=pass.

If the test fails, check your WordPress error log (wp-content/debug.log if WP_DEBUG_LOG is enabled) for SMTP authentication errors. The most common failure causes are incorrect credentials, wrong port number, or the SMTP port being blocked by your hosting firewall. Try port 465 if 587 isn't working, or contact your hosting provider to confirm outbound SMTP is allowed.

Enable Email Logging for Ongoing Monitoring

Once SMTP is working, enable email logging in your plugin settings. This keeps a record of every email WordPress attempts to send, what it was, when it was sent, and whether it succeeded. Without logging, you have no visibility into silent delivery failures, which can mean customers aren't receiving order confirmations or password resets without you ever knowing.

Post SMTP has the best built-in logging of the three major plugins, including a resend button for failed emails. WP Mail SMTP's Pro version adds email logging, but the free version doesn't include it, in that case, pair it with the free "Email Log" plugin by WP Hive for the same result.

Hosting That Works With WordPress Email

HostBible hosting includes outbound SMTP support, dedicated mailboxes for WordPress transactional mail, and full cPanel email management, no extra configuration needed.

View Hosting Plans