How to Fix WordPress Contact Form Not Sending Emails

Photo: Unsplash — free to use, no attribution required

How WordPress Handles Email by Default

If your WordPress site's contact forms, order notifications, or password resets are not reaching recipients, you are dealing with one of the most common WordPress issues. The root cause is almost always the same: your site is using PHP's default mail function instead of an authenticated SMTP connection.

Shared hosting environments compound this problem. Because thousands of websites share the same server IP, that IP often ends up on email blacklists — even if your site has never sent spam. When your legitimate emails go out from a blacklisted IP without proper authentication, they have virtually no chance of reaching the inbox.

Switching to SMTP authentication routes your emails through a dedicated, reputable mail server with proper DNS records and sender reputation. This single change resolves the majority of WordPress email delivery problems.

What You Need for Reliable Delivery

Start by deciding which SMTP service fits your needs. The main options for WordPress sites include: Gmail/Google Workspace SMTP (good for low volume, free with Google account), Microsoft 365/Outlook SMTP (ideal if you already use Microsoft for business email), SendGrid (generous free tier of 100 emails/day), Mailgun (5,000 free emails for the first three months), and Amazon SES (extremely low cost at scale).

You will need administrator access to both your WordPress dashboard and your domain's DNS management panel. DNS access is required to add SPF, DKIM, and potentially CNAME records that authenticate your domain as an authorized sender through your chosen SMTP provider.

Install your chosen SMTP plugin before gathering credentials. The two most reliable options are WP Mail SMTP (by WPForms) and FluentSMTP. Both support all major SMTP providers and provide connection testing tools that simplify troubleshooting.

Plugin Installation and Configuration

After installing WP Mail SMTP or FluentSMTP, configure the mailer type. Most plugins offer both direct SMTP configuration and API-based connections. API connections (available for SendGrid, Mailgun, Amazon SES, and others) are generally more reliable than SMTP because they bypass potential port blocking on your hosting server.

For direct SMTP setup, enter these settings carefully — a single character error in the server address or port number will cause connection failure. Double-check your credentials by logging into your SMTP provider's dashboard to confirm the username and password or API key are correct.

Configure the "Return Path" to match your From address. This ensures that bounce notifications (undeliverable messages) come back to the correct address. Some SMTP plugins call this "Set the return-path to match the From Email" — enable this option if available.

Save your settings and proceed to the testing step before assuming the configuration is complete. Many WordPress email issues are only discovered when a test email fails — and it is better to catch these issues now than when a customer is waiting for an order confirmation.

Sending Test Emails

Systematic testing prevents surprises after deployment. Create a checklist: test basic sending, test to multiple email providers, verify authentication headers, check spam folder placement, test all automated email types (forms, notifications, transactional), and confirm that reply-to addresses work correctly.

Use a tool like MXToolbox to verify your DNS records are configured correctly. Enter your domain and check SPF, DKIM, and MX records. The tool highlights any errors or misconfigurations that could affect email delivery. Fix any issues it identifies before relying on your email configuration for production traffic.

Monitor email delivery for the first week after configuration. Most SMTP services provide delivery logs and bounce reports. Review these daily during the initial period to catch any delivery issues early. Common problems that surface during this monitoring period include SPF alignment failures, DKIM signature mismatches, and recipient server rejections.

Ongoing Best Practices

Email delivery is not a set-and-forget configuration. Monitor your sender reputation regularly using tools like Google Postmaster Tools (for Gmail delivery) and Microsoft SNDS (for Outlook delivery). These free tools show how receiving servers perceive your email — including spam complaint rates, authentication pass rates, and delivery success.

Keep your SMTP plugin and WordPress core updated. Security vulnerabilities in outdated email plugins can be exploited for spam sending, which damages your domain's sender reputation. Schedule regular updates and test email delivery after each update to catch any compatibility issues.

If you switch hosting providers, re-verify your SMTP configuration. Different hosts have different outgoing port policies, IP reputations, and firewall rules. What worked on your old host may not work identically on the new one. Run the full testing checklist after any infrastructure change.

Frequently Asked Questions

Why is my WordPress site not sending emails?

The most common cause is that your site uses PHP mail() instead of authenticated SMTP. Most hosting servers have poor email configuration, causing messages to fail silently or land in spam. Installing an SMTP plugin like WP Mail SMTP or FluentSMTP and configuring it with a proper email service resolves this issue for the vast majority of WordPress sites.

Which SMTP plugin is best for WordPress?

WP Mail SMTP (by WPForms) and FluentSMTP are the two most reliable options. WP Mail SMTP has the largest user base and supports all major providers. FluentSMTP is free with no premium upsells and supports multiple SMTP connections. Both handle the core function — routing WordPress email through authenticated SMTP — equally well.

What SMTP port should I use for WordPress?

Port 587 with TLS encryption is the recommended standard for SMTP client submission. If your host blocks port 587, try port 465 with SSL encryption as an alternative. Port 25 is typically blocked on shared hosting and should be avoided. Your SMTP provider's documentation will confirm the correct port for their service.

Do I need a paid SMTP service for WordPress?

For sites sending fewer than 100-300 emails per day, free tiers from services like SendGrid (100/day), Brevo (300/day), or your existing Gmail/Google Workspace account may be sufficient. For WooCommerce stores or high-traffic sites, a paid transactional email service provides better deliverability, analytics, and dedicated IP addresses.