{"id":1683,"date":"2026-09-03T17:21:25","date_gmt":"2026-09-03T11:51:25","guid":{"rendered":"https:\/\/cpanelfree.com\/blog\/how-to-fix-wordpress-not-sending-emails-smtp-setup\/"},"modified":"2026-09-03T17:24:37","modified_gmt":"2026-09-03T11:54:37","slug":"how-to-fix-wordpress-not-sending-emails-smtp-setup","status":"publish","type":"post","link":"https:\/\/cpanelfree.com\/blog\/how-to-fix-wordpress-not-sending-emails-smtp-setup\/","title":{"rendered":"How to Fix WordPress Not Sending Emails (Free SMTP Setup with Gmail \/ Brevo)"},"content":{"rendered":"<div style=\"background-color: #f8fafc;border-left: 4px solid #14b8a6;padding: 20px;border-radius: 6px;margin-bottom: 25px\">\n<p style=\"margin: 0;font-size: 16px;color: #1e293b\">\n        <strong>Quick Answer:<\/strong> WordPress fails to send password reset emails and WooCommerce order receipts because it relies on the default PHP <code>mail()<\/code> function, which lacks SMTP authentication and is blocked by most web hosting firewalls and inbox spam filters. To fix it, install the free <strong>WP Mail SMTP<\/strong> or <strong>FluentSMTP<\/strong> plugin and connect a free transactional SMTP relay like <strong>Brevo (Sendinblue)<\/strong> (300 free emails\/day) or <strong>Gmail SMTP<\/strong>.\n    <\/p>\n<\/div>\n<h2>Why Default WordPress PHP mail() Fails<\/h2>\n<p>When WordPress triggers an email using <code>wp_mail()<\/code>, it calls the web server&#8217;s local <code>sendmail<\/code> daemon. Because these emails originate directly from a web server IP (often without PTR reverse DNS records or DKIM signatures), major mail providers flag them as potential spam and discard them silently.<\/p>\n<h2>Step 1: Install WP Mail SMTP or FluentSMTP<\/h2>\n<ol style=\"padding-left: 20px;line-height: 1.8\">\n<li>In your WordPress dashboard, go to <strong>Plugins &gt; Add New<\/strong>.<\/li>\n<li>Search for <strong>WP Mail SMTP<\/strong> (or <em>FluentSMTP<\/em>) and click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<\/ol>\n<h2>Step 2: Create a Free Brevo (Sendinblue) Account<\/h2>\n<ol style=\"padding-left: 20px;line-height: 1.8\">\n<li>Create a free account on <a href=\"https:\/\/www.brevo.com\/\" target=\"_blank\" rel=\"noopener\">Brevo.com<\/a> (Includes <strong>300 emails\/day 100% free forever<\/strong>).<\/li>\n<li>Go to <strong>Senders &amp; IP<\/strong> and add your custom business email (e.g. <code>info@yourdomain.com<\/code>).<\/li>\n<li>Go to <strong>SMTP &amp; API<\/strong> and copy your API Key.<\/li>\n<\/ol>\n<h2>Step 3: Connect Brevo to WordPress<\/h2>\n<ol style=\"padding-left: 20px;line-height: 1.8\">\n<li>In WordPress, go to <strong>WP Mail SMTP &gt; Settings<\/strong>.<\/li>\n<li>Set <em>From Email<\/em> to your verified domain email (e.g. <code>info@yourdomain.com<\/code>).<\/li>\n<li>Under <em>Mailer<\/em>, select <strong>Brevo<\/strong>.<\/li>\n<li>Paste your Brevo API Key into the field and click <strong>Save Settings<\/strong>.<\/li>\n<\/ol>\n<h2>Step 4: Send a Test Email to Verify Inbox Delivery<\/h2>\n<p>Navigate to <strong>WP Mail SMTP &gt; Tools &gt; Email Test<\/strong>, enter your personal email address, and click <strong>Send Email<\/strong>. You should receive a green confirmation indicating 250 OK inbox delivery.<\/p>\n<div style=\"background-color: #f8fafc;border: 1px solid #e2e8f0;border-left: 4px solid #0ea5e9;padding: 20px;border-radius: 8px;margin: 30px 0\">\n<h3 style=\"margin-top: 0;color: #0f172a;font-size: 18px;display: flex;align-items: center\">\n        <span style=\"margin-right: 8px\">\ud83d\udd17<\/span> Recommended Related Technical Guides:<br \/>\n    <\/h3>\n<ul style=\"margin: 10px 0 0 0;padding-left: 20px;line-height: 1.8\">\n<li><a href=\"https:\/\/cpanelfree.com\/blog\/how-to-setup-spf-dkim-dmarc-records-email-deliverability\/\" style=\"color: #0284c7;text-decoration: none;font-weight: 600\">How to Set Up SPF, DKIM &amp; DMARC Records<\/a><\/li>\n<li><a href=\"https:\/\/cpanelfree.com\/blog\/how-to-fix-error-establishing-database-connection-wordpress\/\" style=\"color: #0284c7;text-decoration: none;font-weight: 600\">How to Fix Error Establishing a Database Connection in WordPress<\/a><\/li>\n<li><a href=\"https:\/\/cpanelfree.com\/blog\/how-to-create-mysql-database-user-cpanel\/\" style=\"color: #0284c7;text-decoration: none;font-weight: 600\">How to Create MySQL Database &amp; User with Full Privileges<\/a><\/li>\n<li><a href=\"https:\/\/cpanelfree.com\/#plans\" style=\"color: #0284c7;text-decoration: none;font-weight: 600\">Explore $0 Free cPanel Web Hosting Plans<\/a><\/li>\n<\/ul>\n<\/div>\n<h2>Comparing Free Transactional SMTP Services in 2026<\/h2>\n<table style=\"width: 100%;border-collapse: collapse;margin: 20px 0;font-size: 14px\">\n<thead>\n<tr style=\"background-color: #0f172a;color: #ffffff\">\n<th style=\"padding: 10px;border: 1px solid #334155\">SMTP Provider<\/th>\n<th style=\"padding: 10px;border: 1px solid #334155\">Free Monthly Quota<\/th>\n<th style=\"padding: 10px;border: 1px solid #334155\">Connection Method<\/th>\n<th style=\"padding: 10px;border: 1px solid #334155\">Dedicated IP Support<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"background-color: #f8fafc\">\n<td style=\"padding: 10px;border: 1px solid #cbd5e1;font-weight: bold\">Brevo (Sendinblue)<\/td>\n<td style=\"padding: 10px;border: 1px solid #cbd5e1;color: #10b981\"><strong>9,000 \/ month (300\/day)<\/strong><\/td>\n<td style=\"padding: 10px;border: 1px solid #cbd5e1\">REST API \/ SMTP Port 587<\/td>\n<td style=\"padding: 10px;border: 1px solid #cbd5e1\">Optional Add-on<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px;border: 1px solid #cbd5e1;font-weight: bold\">Mailgun<\/td>\n<td style=\"padding: 10px;border: 1px solid #cbd5e1\">5,000 Free Trial<\/td>\n<td style=\"padding: 10px;border: 1px solid #cbd5e1\">REST API \/ Webhooks<\/td>\n<td style=\"padding: 10px;border: 1px solid #cbd5e1\">Enterprise Tier<\/td>\n<\/tr>\n<tr style=\"background-color: #f8fafc\">\n<td style=\"padding: 10px;border: 1px solid #cbd5e1;font-weight: bold\">Google Workspace \/ Gmail API<\/td>\n<td style=\"padding: 10px;border: 1px solid #cbd5e1\">2,000 \/ day (Workspace)<\/td>\n<td style=\"padding: 10px;border: 1px solid #cbd5e1\">OAuth 2.0 Client Tokens<\/td>\n<td style=\"padding: 10px;border: 1px solid #cbd5e1\">Shared Google IP Mesh<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Automating Email Failure Alerts with FluentSMTP Logging<\/h2>\n<p>Install <strong>FluentSMTP<\/strong> to maintain an encrypted local database log of all outgoing emails. If a transactional email fails due to recipient server bounces, FluentSMTP automatically logs the exact SMTP response code (e.g. <code>550 User Unknown<\/code> or <code>421 Service Unavailable<\/code>) for instant troubleshooting.<\/p>\n<h2>Step-by-Step SMTP Troubleshooting Guide for WordPress<\/h2>\n<ol style=\"padding-left: 20px;line-height: 1.8\">\n<li><strong>Check Hosting Port 25\/587 Blocks:<\/strong> Many cloud providers (like DigitalOcean, AWS EC2, and Linode) block outbound port 25 to prevent spam. Always connect SMTP relays over <strong>port 587 (STARTTLS)<\/strong> or <strong>port 465 (SSL\/TLS)<\/strong>.<\/li>\n<li><strong>Match Sender Email to Verified Domain:<\/strong> Ensure the <em>From Email<\/em> address declared in your SMTP plugin exactly matches the domain authorized in your SMTP relay (e.g. <code>noreply@yourdomain.com<\/code>). Sending as an unauthorized address triggers <code>550 Sender Verify Failed<\/code> errors.<\/li>\n<li><strong>Verify TLS Cryptographic Handshake:<\/strong> Ensure your server&#8217;s PHP cURL and OpenSSL libraries are updated to negotiate TLS 1.2 or TLS 1.3 encryption.<\/li>\n<\/ol>\n<h2>Configuring Fallback SMTP Relays in FluentSMTP<\/h2>\n<p>FluentSMTP allows you to configure a secondary fallback connection (e.g. Primary: Brevo, Fallback: Gmail API). If your primary relay experiences temporary rate limiting or API downtime, FluentSMTP automatically routes transactional receipts through the backup connection without dropping user emails.<\/p>\n<div style=\"background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%);border: 1px solid #334155;border-radius: 12px;padding: 25px;margin: 30px 0;text-align: center\">\n<h3 style=\"color: #38bdf8;margin-top: 0;font-size: 20px\">Reliable Free Hosting on CpanelFree<\/h3>\n<p style=\"color: #94a3b8;font-size: 14px;line-height: 1.6;max-width: 600px;margin: 0 auto 15px\">\n        Deploy WordPress with free cPanel webmail, web hosting, and SMTP support at 100% zero cost on <strong>CpanelFree<\/strong>.\n    <\/p>\n<p>    <a href=\"https:\/\/cpanelfree.com\/free-wordpress-hosting\" style=\"display: inline-block;background-color: #14b8a6;color: #ffffff;padding: 10px 22px;border-radius: 6px;text-decoration: none;font-weight: bold;font-size: 14px\">Deploy Free WordPress Site<\/a>\n<\/div>\n<h2>Frequently Asked Questions<\/h2>\n<div style=\"border-bottom: 1px solid #e2e8f0;padding: 12px 0\">\n<h4 style=\"margin: 0 0 8px 0;color: #1e293b\">Can I use standard personal Gmail SMTP without API keys?<\/h4>\n<p style=\"margin: 0;color: #475569;font-size: 14px\">Google no longer supports &#8220;Less Secure Apps&#8221; passwords. To use Gmail, you must generate a dedicated <strong>Google App Password<\/strong> with 2FA enabled or connect via OAuth 2.0 Client ID.<\/p>\n<\/div>\n<h2>Troubleshooting Gmail API OAuth 2.0 Token Expiration<\/h2>\n<p>If you connect WordPress to Gmail using OAuth 2.0 API credentials and emails suddenly stop sending after 7 days, your Google Cloud App is in &#8220;Testing Mode&#8221;. Navigate to the Google Cloud Console, open <em>OAuth consent screen<\/em>, and click <strong>Publish App<\/strong> to make your refresh tokens permanent.<\/p>\n<div style=\"border-bottom: 1px solid #e2e8f0;padding: 12px 0\">\n<h4 style=\"margin: 0 0 8px 0;color: #1e293b\">Is Brevo SMTP 100% free for WordPress?<\/h4>\n<p style=\"margin: 0;color: #475569;font-size: 14px\">Yes. Brevo offers a permanent free tier providing 300 emails per day (9,000 emails per month) with dedicated API integration, real-time deliverability tracking, and zero credit card requirements.<\/p>\n<\/div>\n<div style=\"background-color: #f1f5f9;padding: 15px;border-radius: 8px;margin: 20px 0\">\n<h4 style=\"margin-top: 0;color: #1e293b\">Pro Sysadmin Tip: Setting Up Custom Reverse DNS (PTR)<\/h4>\n<p style=\"margin: 0;color: #475569;font-size: 14px\">If you operate a private VPS mail relay, configure a valid PTR (Reverse DNS) record in your hosting dashboard matching your mail hostname (e.g. <code>mail.yourdomain.com<\/code>) to pass Spamhaus validation tests.<\/p>\n<\/div>\n<p>Replacing default PHP mail with authenticated SMTP relays ensures that every customer receipt, registration notification, and password reset email lands reliably in the primary inbox.<\/p>\n<p>Connecting WordPress to dedicated SMTP relays like Brevo or Gmail API permanently solves deliverability failures, ensuring critical customer notifications are delivered instantly with 100% reliability.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quick Answer: WordPress fails to send password reset emails and WooCommerce order receipts because it relies on the default PHP mail() function, which lacks SMTP authentication and is blocked by most web hosting firewalls and inbox spam filters. To fix it, install the free WP Mail SMTP or FluentSMTP plugin and connect a free transactional [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1682,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[51],"tags":[],"class_list":["post-1683","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials"],"_links":{"self":[{"href":"https:\/\/cpanelfree.com\/blog\/wp-json\/wp\/v2\/posts\/1683","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cpanelfree.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cpanelfree.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cpanelfree.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cpanelfree.com\/blog\/wp-json\/wp\/v2\/comments?post=1683"}],"version-history":[{"count":5,"href":"https:\/\/cpanelfree.com\/blog\/wp-json\/wp\/v2\/posts\/1683\/revisions"}],"predecessor-version":[{"id":1727,"href":"https:\/\/cpanelfree.com\/blog\/wp-json\/wp\/v2\/posts\/1683\/revisions\/1727"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cpanelfree.com\/blog\/wp-json\/wp\/v2\/media\/1682"}],"wp:attachment":[{"href":"https:\/\/cpanelfree.com\/blog\/wp-json\/wp\/v2\/media?parent=1683"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cpanelfree.com\/blog\/wp-json\/wp\/v2\/categories?post=1683"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cpanelfree.com\/blog\/wp-json\/wp\/v2\/tags?post=1683"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}