WordPress Not Sending Emails? How to Fix Contact Form & WooCommerce Emails (2026)
2 free files — jump to downloads
On this page
- Why WordPress emails disappear
- Step 1: Confirm the problem
- Step 2: Choose an email account to send from
- Step 3: Get the SMTP details
- Creating a Gmail App Password
- Step 4 (one-click route): Turn on SMTP with SWS Site Fixer
- Step 5: Authenticate your domain (SPF, DKIM, DMARC)
- Step 6: Test like a customer
- Still not working? Common causes
- Keep it working
- Download the files
A visitor fills in your contact form, the page says "Thank you, your message has been sent", and your inbox stays empty. Or a customer places an order and never receives the confirmation. This is one of the most common WordPress problems, and in 2026 it has become even more common, because the big email providers now reject far more unauthenticated mail than they used to.
The good news: WordPress not sending emails is almost always fixed by the same two steps, sending through SMTP and authenticating your domain. This guide covers both, with a free plugin for the one-click route and a cheat sheet of SMTP settings.
Why WordPress emails disappear
By default, WordPress sends every email (contact forms, WooCommerce orders, password resets) with PHP's built-in mail() function on your web server. That causes three problems:
- Hosts limit it. Many hosts restrict or disable
mail()to stop spammers, so messages silently fail. - No authentication. The email claims to come from your domain but is sent by a shared server that is not listed as an approved sender. Gmail, Outlook and Yahoo treat this as suspicious.
- Stricter rules. Gmail and other providers now require proper authentication (SPF, DKIM and DMARC) and have moved from warning to rejecting more non-compliant messages. A setup that "worked" a few years ago may now fail completely.
Step 1: Confirm the problem
- Submit your own contact form with a different email address than the site's.
- Check the inbox and the spam folder.
- Trigger a password reset from the WordPress login page as a second test.
If neither email arrives, or both land in spam, follow the steps below.
Step 2: Choose an email account to send from
SMTP means WordPress logs in to a real email account and sends through it, exactly like your phone does. Good choices:
- Your hosting email, such as
hello@yourdomain.comcreated in hPanel or cPanel. Free with most plans. - Google Workspace or Gmail. Reliable, but you need an App Password.
- Zoho Mail. Popular for business email in India.
- A transactional service like Brevo. Best for stores that send many emails.
Important: the "From" address must belong to the account you send through. Sending "from" info@yourdomain.com through a personal Gmail account is exactly what gets emails rejected.
Step 3: Get the SMTP details
You need four things: SMTP host, port, encryption and login. Common values:
- Gmail:
smtp.gmail.com, port 587 with TLS, your Gmail address and a 16-character App Password. - Hostinger:
smtp.hostinger.com, port 465 with SSL, your full mailbox address and its password. - Zoho (India):
smtp.zoho.in, port 465 with SSL.
The free cheat sheet below lists these plus Outlook and Brevo.
Creating a Gmail App Password
- Open your Google Account and go to Security.
- Turn on 2-Step Verification if it is not already on.
- Search for App passwords, create one named "WordPress", and copy the 16-character code. You will not see it again.
Step 4 (one-click route): Turn on SMTP with SWS Site Fixer
I built the free SWS Site Fixer plugin for exactly this problem. Download it below, then:
- In WordPress, go to Plugins > Add New Plugin > Upload Plugin, choose the zip and activate it.
- Open Site Fixer > Email Fix.
- Tick Send email via SMTP and enter the host, port, encryption, username and password from Step 3.
- Set From email to an address on that same account, and a From name such as your business name.
- Turn on Keep an email log, save, and send a test email.
The log shows every email WordPress sends and whether it succeeded or failed, so you never have to guess again. Any reputable SMTP plugin works the same way if you prefer another one.
Step 5: Authenticate your domain (SPF, DKIM, DMARC)
SMTP gets emails sent; authentication gets them into the inbox. Add these DNS records where your domain's DNS is managed (for example hPanel > Domains > DNS):
- SPF: a TXT record listing the servers allowed to send for your domain. Your email provider gives you the exact value. Have only one SPF record; merge providers into it.
- DKIM: a record containing a public key that signs your emails. Enable it in your email provider's dashboard and copy the record it shows.
- DMARC: a policy record. Start with a monitoring policy:
Host: _dmarc Type: TXT Value: v=DMARC1; p=none; rua=mailto:you@yourdomain.com
Once reports show everything passing, you can tighten the policy to p=quarantine. DNS changes can take a few hours to take effect.
Step 6: Test like a customer
- Send the contact form to a Gmail address and an Outlook address.
- Open the received email, choose "Show original" (Gmail) and check SPF, DKIM and DMARC all say PASS.
- Place a test WooCommerce order and check the confirmation email.
- If something lands in spam, mark it "Not spam" and check the From address matches your SMTP account.
Still not working? Common causes
- "SMTP connect() failed": wrong host or port, or your host blocks that port. Try 465/SSL instead of 587/TLS, or ask your host.
- "Authentication failed": wrong password, or a normal Gmail password instead of an App Password.
- Emails sent but in spam: missing SPF/DKIM, or the From address does not match the account.
- Only some emails fail: the form plugin may use its own "From" setting. Make it match your SMTP account.
- Two SMTP plugins active: they conflict. Keep one.
Keep it working
Re-test your contact form after big plugin updates, keep the email log on, and make sure your forms also save submissions inside WordPress so nothing is lost even if an email fails. Your form is where your customers reach you; test it at least once a month as part of the WordPress maintenance routine.
Download the free plugin and the SMTP cheat sheet below. If your site has other problems, the same plugin also helps with critical errors, sites missing from Google and SSL warnings.
Download the files
Free to use in your own and client projects · no sign-up · tested before upload. Always try files on a staging site first and keep a backup.
-
SWS Site Fixer plugin (free WordPress plugin)sws-site-fixer-v1.0.0.zip · 25.8 KB · v1.0.0Download SWS Site Fixer plugin (free WordPress plugin) (25.8 KB)
-
SMTP settings cheat sheet (Gmail, Hostinger, Zoho, Outlook, Brevo)wordpress-smtp-settings-cheat-sheet.txt · 1.8 KB · v1.0Download SMTP settings cheat sheet (Gmail, Hostinger, Zoho, Outlook, Brevo) (1.8 KB)
Download not working? Tell me and I'll fix it.
Frequently asked questions
Why does my WordPress contact form say sent but no email arrives?
The form plugin handed the message to WordPress, which tried to send it with the server's PHP mail function. Most hosts limit that function, and receiving providers like Gmail reject or spam-folder messages that are not authenticated. Sending through SMTP fixes this.
Do I need a paid SMTP service?
Not for a normal business site. Your hosting email account, Gmail or Google Workspace, Zoho Mail or the free tier of a transactional service like Brevo can all send contact-form and order emails through SMTP.
Can I use my normal Gmail password for SMTP?
No. Google requires an App Password for SMTP, which needs 2-Step Verification turned on. Create it in your Google Account under Security, then paste the 16-character code into your SMTP settings.
What are SPF, DKIM and DMARC?
They are DNS records that prove your domain is allowed to send email. SPF lists approved servers, DKIM adds a digital signature, and DMARC tells receivers what to do when checks fail. Together they keep your emails out of spam.
Will this also fix WooCommerce order emails?
Yes. WooCommerce sends order, invoice and password-reset emails through the same WordPress mail function, so once SMTP is working, those emails are delivered too. Check them under WooCommerce > Settings > Emails.


