A WordPress contact form not sending email is one of the most common — and most damaging — silent failures on a South African business website. A prospect fills in your form, you never receive the message, and the lead disappears. If your site was designed to bring in enquiries (see our website cost South Africa guide for what a properly built WordPress site should include), a broken contact form undoes that investment immediately.

The good news: this problem almost always has a known technical cause, and a working fix takes under 30 minutes.

WordPress sends email using PHP's built-in mail function. Most shared hosts in South Africa — including Xneelo and Afrihost — either block this function outright or send via an unauthenticated server IP. Gmail, Outlook and Yahoo treat those messages as spam or reject them before they reach your inbox. Installing an SMTP plugin routes your form's notifications through an authenticated email service instead. This post walks through the diagnosis and the fix, step by step.

Quick Answer

A WordPress contact form not sending email is almost always caused by your hosting server's PHP mail function being blocked or unauthenticated. The reliable fix is to install a free SMTP plugin (WP Mail SMTP or FluentSMTP) and connect it to an authenticated email service like Brevo, which offers 300 free emails per day. Before installing anything, check your spam folder and verify your form's notification settings — test emails that succeed but form submissions that fail point to a form configuration issue, not an SMTP problem.

Is your site losing enquiries right now?

Send us your current form setup and we will tell you exactly where notifications are failing — and what to fix first.

Get a free diagnosis

Why does a WordPress contact form stop sending email?

WordPress relies on PHP's mail() function to send all email by default — including every notification your contact form generates. This function sends email directly from the web server rather than through an authenticated mail service. Receiving servers at Gmail, Outlook and Yahoo have no way to verify the email is legitimate, so they reject it or route it to spam.

Shared hosting compounds the problem. On a shared plan, your site runs on the same server as hundreds or thousands of other websites. If one of those sites sends spam, the shared IP address gets blacklisted — and all outgoing mail from every account on that server gets blocked, including your form notifications. Most South African hosts on shared plans, including major providers like Xneelo and Afrihost, have documented deliverability issues for exactly this reason.

Port 25 — the traditional SMTP port — is blocked by most modern hosts to prevent abuse. When PHP's mail function tries to use it, delivery silently fails. The server records no error, WordPress shows a successful form submission, and you receive nothing. The symptom of a contact form not sending email on your WordPress site is deceptive precisely because there is no visible error to follow.

The authentication gap explained

When your contact form sends from wordpress@yourdomain.co.za but routes through your hosting server's IP, Gmail checks whether that IP is authorised to send email for your domain. Without an SPF record listing that IP, the authentication check fails. Without a DKIM signature, there is no cryptographic proof the message is genuine. Without DMARC, the receiving server has no policy to follow. Gmail and Yahoo tightened these requirements in 2024 — what once slipped through now gets blocked.

Contact Form 7 has two distinct deliverability problems. Its default From address — wordpress@yourdomain — is a generic unauthenticated sender that most hosts cannot deliver reliably. A common additional misconfiguration makes things worse: placing the visitor's submitted email tag in the From field means your notification claims to originate from a Gmail or Telkom address, routed via your hosting server — which has no authority to send on behalf of those domains. Receiving servers treat this as spoofing and reject it. Both problems share the same fix: set From to a real domain-based address you control, and move the visitor's email tag to the Reply-To field.

What should you check before installing any plugin?

The fastest diagnostic is to eliminate the simplest causes before changing anything technical. Most contact form not sending email WordPress site owners report traces to one of four places: the hosting server, the sender address, the form notification settings, or a missing DNS record. When WordPress form emails not sending, work through these checks in order before making any configuration changes.

Check 1 — Spam and junk folders

Search your inbox spam folder for the email address your form sends from. Many unauthenticated form emails do arrive — they just land in spam rather than the inbox. If you find them there, the sending mechanism is working; the problem is purely authentication.

Check 2 — Form notification settings

In your form plugin, open the notification settings and confirm the Send To address is correct. Then check the From field for two distinct misconfigurations: (a) a free-provider address like yourname@gmail.com — your server cannot authenticate as Gmail; (b) the visitor's submitted email tag used as the From address — your server has no authority to send on behalf of visitor domains. Both cause silent delivery failures that SMTP alone will not fix. The From field must contain an address on your own domain.

Check 3 — Test with a different email address

If you use Xneelo or Afrihost email hosting for your business address, try a test submission to a Gmail or Outlook personal address instead. Sometimes the issue is delivery to a specific mail server, not outgoing mail in general.

Check 4 — Fill the form yourself and note the exact behaviour

WordPress typically shows a success message after a submission regardless of whether the notification email was sent. Submit your form, note the confirmation shown, and check your logs if any. A WP Mail SMTP test email that succeeds but a form submission that does not means the SMTP connection works and the fault is inside the form plugin's notification settings — not the email infrastructure.

How does the From address affect email delivery?

Changing the sender address to a domain-aligned email is the single most impactful configuration fix before any plugin installation. If your form sends notifications from noreply@yourdomain.co.za rather than a free email address or the visitor's submitted address, authentication checks are much more likely to pass.

For Contact Form 7: navigate to Contact → Contact Forms → edit your form → Mail tab. Replace whatever is in the From field with a real address on your own domain, such as noreply@yourdomain.co.za. Set the Reply-To field to use the visitor's submitted email address tag (typically [your-email]) so you can still reply to the enquiry. Save.

For WPForms: go to the form's Settings → Notifications → From Email and enter a domain-based address. WPForms includes a smart tag to populate the reply-to from the visitor's submission.

For Gravity Forms: open the form → Settings → Notifications → choose the notification → update the From Email to a domain address and set Reply To using the visitor's field tag.

The From address rule

Your form's notification From address must be on the same domain as your website. Using gmail.com, outlook.com or the visitor's submitted address as the From field is a reliable path to deliverability failure — receiving servers see it as sender impersonation and reject or quarantine the message.

How do you fix a WordPress contact form not sending email with SMTP?

Replacing the default PHP mail function with an authenticated SMTP connection is the permanent, reliable fix for a WordPress contact form not sending email. The standard approach to fix WordPress not sending email is to install an SMTP plugin that intercepts every outgoing message from your site and routes it through a dedicated mail service that receiving servers trust.

Install WP Mail SMTP (or FluentSMTP)

WP Mail SMTP is the most widely used WordPress SMTP plugin, with over 4 million active installations. The free version is complete for most small and medium sites: it connects to any SMTP service and replaces the PHP mail function across all plugins — not just your contact form. FluentSMTP is a fully free alternative that includes email logging and multiple connections at no cost.

Installation steps for WP Mail SMTP:

  1. In WordPress, go to Plugins → Add New and search for "WP Mail SMTP".
  2. Install and activate the plugin by WPForms.
  3. The setup wizard launches automatically — follow it through mailer selection.
  4. Choose your email service (see the mailer comparison below).
  5. Enter the SMTP credentials supplied by your chosen service.
  6. Enable the Force From Email setting to prevent individual plugins from overriding your authenticated sender address.
  7. Navigate to WP Mail SMTP → Tools → Email Test and send a test message to confirm delivery.

Test email passes, but form submission still fails

If WP Mail SMTP's test email arrives but your contact form notification does not, the SMTP connection is healthy. The problem is inside the form plugin's notification settings — a wrong recipient address, a conditional logic rule blocking the notification, or a conflict with a caching plugin that processes the form before SMTP initialises. Check the form's notification settings first, then clear your site's cache.

What DNS records does your domain need for email delivery?

Three DNS records tell receiving servers that your domain's email is legitimate. Without them, even a correctly configured SMTP service will still see some messages rejected or routed to spam.

RecordWhat it doesWhere to add itPriority
SPFLists the mail servers authorised to send email for your domainYour domain's DNS (TXT record), via Xneelo cPanel or your domain registrarEssential
DKIMAdds a cryptographic signature that proves the message was not tampered withGenerated by your SMTP service (Brevo, SendGrid, etc.) — add the TXT record they provide to your DNSEssential
DMARCTells receiving servers what to do when SPF or DKIM checks failTXT record at _dmarc.yourdomain.co.za — start with p=none to monitor before enforcingStrongly recommended

Your SMTP service provides the exact SPF and DKIM record values when you verify your domain during setup. Add them exactly as specified — a missing dot or extra space breaks the verification. Check whether all three records are correctly published by running your domain through MXToolbox's email authentication checker before going live.

If your domain is hosted on Xneelo (cPanel), DNS records are managed in the Zone Editor under the cPanel dashboard. If you registered your domain through a South African registrar separately from your host, you update DNS at the registrar — not the host.

Which SMTP mailer works best for South African WordPress sites?

Choosing the right email service depends on your sending volume and budget. Most SA business contact forms send fewer than 100 notifications per day, which puts a free tier well within reach.

MailerFree tierPaid costBest forWP Mail SMTP tier needed
Brevo300 emails/day — no credit cardFrom ~R131/month (approx. $8/mo at R16.42/USD)Most SA small business sites — free plan covers typical contact form volumeFree
Amazon SESFree first 12 months of useUsage-based after free tierHigh-volume sending; requires AWS account and technical setupPro (~R800/year)
Gmail / Google WorkspaceWith a Google Workspace account (paid)Part of Google Workspace subscriptionSites already on Google Workspace for business emailFree (with OAuth)
SendGridNo free tierUsage-basedDeveloper teams with existing SendGrid infrastructureFree

This WordPress SMTP email fix applies to all form plugins: Contact Form 7, WPForms, Gravity Forms and Ninja Forms all route through whatever mail function the site uses.

For most South African small business WordPress sites, the practical choice is Brevo on the free plan — 300 emails per day covers contact form notifications, order confirmations and basic transactional mail. Register a free Brevo account, verify your domain by adding the DNS records Brevo provides, then enter the SMTP credentials into WP Mail SMTP or FluentSMTP.

The 30-minute fix for most SA sites

Register a free Brevo account → verify your domain by adding the two DNS TXT records Brevo provides → install WP Mail SMTP (free) → select Brevo as mailer, enter your SMTP key → enable Force From Email → run the Email Test. If the test message arrives in your inbox, your contact form notifications will too. The Brevo free tier and WP Mail SMTP free plugin mean no monthly cost for this setup.

Want someone to do this properly the first time?

Share your WordPress site details with us and we will assess whether the email issue is part of a wider technical configuration problem worth fixing.

Book a free technical review

Why South African Businesses Choose Growth Pulse Media for WordPress Support

South African businesses working with Growth Pulse Media get WordPress configuration — SMTP, DNS authentication, POPIA-aligned form handling — handled by a senior practitioner with direct SA ecommerce operating experience, not delegated to a junior or a templated build process. Dirk van Greuning built and scaled a large South African ecommerce operation before founding the agency, which means every configuration recommendation here comes from operational experience rather than a generic support checklist.

We work with a deliberately limited number of clients so every engagement gets senior attention. No handoffs to juniors, no templated site builds that break the moment you touch the settings. All work is executed in-house.

For South African businesses, that matters in practice: we know which SA hosting providers have chronic email deliverability issues, which SMTP services have reliable infrastructure for .co.za domains, and how to configure the whole stack — WordPress, SMTP, DNS, POPIA-aligned form handling — so your site works as a lead generation asset rather than a silent form-eating machine. Our web design service builds sites with proper email infrastructure from day one.

Who this fix is NOT for

Sites built on website builders, not WordPress

If your site runs on Wix, Squarespace or Shopify, the PHP mail / SMTP fix does not apply. Each platform has its own email notification system, and fixes are platform-specific. This guide is WordPress-only.

Sites with a transactional email service already configured

If you are on a managed WordPress host (WP Engine, Kinsta, Cloudways) that already mandates SMTP and provides credentials, adding a second SMTP plugin on top creates conflicts. Check your host's documentation first — the fix may already be available natively.

Sites where the form itself is broken, not the email

If your contact form throws a JavaScript error, fails to submit, or shows no confirmation message, the problem is in the form plugin or a theme/plugin conflict — not email delivery. Fix the form submission first, then test email delivery.

Businesses that need custom form logic or CRM integration

If your enquiry forms need to create deals in a CRM, trigger automations, or route leads to different team members based on answers, a basic SMTP fix is only the starting point. You need a properly integrated form-to-CRM workflow, not a notification email.

Not sure which problem you actually have?

Tell us what behaviour you are seeing and we will point you at the right fix — without any commitment.

Get a quick answer

Frequently asked questions

Why is my WordPress contact form not sending email even after installing WP Mail SMTP?

If WP Mail SMTP's own test email works but contact form notifications still fail to arrive, the SMTP connection is healthy — the fault is inside your form plugin's notification settings. Check that the Send To address is correct, that no conditional logic is suppressing the notification, and that your site's cache has been cleared. Caching plugins can process form submissions before SMTP initialises, swallowing the outgoing notification.

Does the fix work for Contact Form 7 specifically?

Yes. CF7 has two distinct From-address problems: its default sender is wordpress@yourdomain (unauthenticated), and a common misconfiguration places the visitor's submitted email tag in the From field — causing SPF failure because your server has no authority to send on behalf of visitor Gmail or Telkom addresses. Fix both by editing your form's Mail tab in Contact → Contact Forms: set From to a real domain-based address like noreply@yourdomain.co.za, and place the visitor's email field tag in the Reply-To header instead.

Is Brevo's free SMTP plan enough for a South African small business site?

For most SA small business WordPress sites, yes. Brevo's free plan allows up to 300 emails per day with no credit card required, which covers contact form notifications and basic transactional email comfortably. If your site sends higher volumes — WooCommerce order emails, booking confirmations and form notifications combined — track your daily send count in Brevo's dashboard and upgrade to the paid plan (from approximately R131/month) when you approach the limit.

What are SPF, DKIM and DMARC, and do I need all three?

SPF, DKIM and DMARC are DNS records that tell receiving servers your email is legitimate — SPF specifies which servers may send mail for your domain, DKIM adds a cryptographic signature to each message, and DMARC sets the policy when either check fails.

Gmail and Yahoo tightened these requirements in 2024, so missing records now lead to consistent delivery failures. You can get email delivered without DMARC, but without it a DKIM failure leaves no fallback policy and some servers quietly discard the message. Set up all three using the TXT records your SMTP service provides during domain verification.

My hosting is on Xneelo — is there a specific fix for that?

Xneelo (formerly Hetzner South Africa) uses cPanel hosting where you can update DNS records via the Zone Editor. Add the SPF and DKIM TXT records your chosen SMTP service provides, along with a DMARC record at _dmarc.yourdomain.co.za. Xneelo's shared hosting sends via a shared IP that may have deliverability limitations — routing outgoing WordPress email through an authenticated service like Brevo bypasses this entirely and is the recommended approach regardless of whether Xneelo's IP is currently clean.

Can I use a Gmail address to send WordPress contact form notifications?

You can connect WP Mail SMTP to a Gmail account via OAuth and route notifications through Gmail's SMTP servers. This works, but free Gmail accounts have daily sending limits and it is better practice to send from a domain-based address for a business site. If your business already uses Google Workspace for email, connecting WP Mail SMTP to your Workspace account is a reasonable choice — use your business address, not a personal Gmail.

WordPress email broken — or never properly set up?

Growth Pulse Media builds and maintains WordPress sites for South African businesses where the whole technical stack works: SMTP, DNS authentication, form configuration, and POPIA-aligned data handling. All work is executed in-house by senior practitioners. No juniors, no templated build-and-forget delivery.

No obligation — we will get back to you within 24 hours.

Talk to us about your WordPress site
Dirk van Greuning — Founder, Growth Pulse Media
Dirk van Greuning Founder, Growth Pulse Media

Founder of Growth Pulse Media and a specialist in South African search dominance. Dirk translates his experience in scaling South African businesses into high-velocity digital strategies for B2B and retail leaders. He writes about SEO, lead generation, and paid media from an operator's perspective — prioritising pipeline value over impressions.

Connect on LinkedIn