Contact Form 7 Not Sending Emails? Here’s How to Fix It

Contact Form 7 Not Sending Emails? Here’s How to Fix It

A step-by-step guide to fixing Contact Form 7 when emails are not arriving, covering why PHP mail fails, how to set up SMTP properly, and the SPF, DKIM and DMARC records that keep form notifications out of spam.

You have tested your contact form, it says “Thank you for your message”, and yet nothing arrives in your inbox. Contact Form 7 not sending emails is one of the most common WordPress problems there is, and the frustrating part is that the plugin itself is rarely broken. In almost every case, the email is being generated but never delivered.

This guide walks through why it happens and how to fix it properly, so enquiries from potential customers stop silently disappearing.

Why Contact Form 7 emails go missing

By default, Contact Form 7 sends mail using PHP’s built-in wp_mail() function. The message leaves your web server directly, with no authentication. To receiving mail servers, that looks a lot like the way spam is sent, so messages are either quietly junked or rejected outright before they ever reach you.

The three usual culprits are:

  • No SMTP authentication: the email is not sent through a real, authenticated mailbox.
  • A mismatched “From” address: the form sends from an address that does not exist on your domain, or from a free address like Gmail, which fails sender checks.
  • Missing SPF, DKIM and DMARC records: your domain’s DNS does not tell receiving servers that your website is allowed to send mail for it.

Step 1: Fix the “From” address

In your form’s settings, open the Mail tab. The From field should be an address that genuinely exists on your own domain, for example website@yourdomain.co.uk – never the visitor’s address, and never a Gmail or Outlook address. Put the visitor’s address in the Reply-To header instead, using Reply-To: [your-email] under “Additional headers”. This one change fixes a surprising number of broken forms.

Step 2: Send through SMTP, not PHP mail

The proper fix is to route form emails through an authenticated mailbox using SMTP. Install a lightweight SMTP plugin (WP Mail SMTP and FluentSMTP are both well maintained), then enter the SMTP settings for a real mailbox on your domain – the same details you would use in Outlook or Apple Mail.

If your hosting includes email hosting on the same domain, this takes about five minutes: create a mailbox such as website@yourdomain.co.uk, enter the SMTP hostname, port 465 or 587, and the mailbox password into the plugin, then use the plugin’s built-in test to confirm delivery.

Step 3: Check your SPF, DKIM and DMARC records

Even authenticated mail can land in spam if your domain’s DNS records are incomplete. Three records matter:

  • SPF lists the servers allowed to send mail for your domain.
  • DKIM adds a cryptographic signature that proves the message was not tampered with. See our guide to adding a DKIM record.
  • DMARC tells receiving servers what to do when a message fails those checks.

We cover all three in plain English in our guide to why business emails go to spam. Since Google and Yahoo tightened their email sender requirements in 2024, these records have moved from “nice to have” to essential.

Step 4: Test properly

Do not just send a test to your own inbox. Send tests to a Gmail address, an Outlook address, and your business address, and check the spam folder in each. Use a free tool such as a mail-tester service to score your message. If it passes at Gmail and Outlook, you can be confident real enquiries are getting through.

Still not working? Check these

  • A security or caching plugin is interfering: temporarily disable caching for the page containing the form and retest.
  • Your host blocks outbound PHP mail: some hosts disable it entirely as an anti-spam measure – another reason SMTP is the right approach.
  • The mailbox is full or the address is wrong: obvious, but check the To field for typos and confirm the mailbox can receive mail sent to it directly.
  • Emails arrive but very slowly: this usually points to a queue on the sending server; authenticated SMTP through your mail provider resolves it.

FAQs about Contact Form 7 email problems

Contact Form 7 says the message was sent – was it?

The success message only means the plugin handed the email to the server. It says nothing about whether it was delivered. That is why SMTP with a delivery test matters.

Do I need a paid plugin to fix this?

No. The free versions of the main SMTP plugins handle everything described here. What you do need is a real mailbox on your own domain to send through.

Will switching hosting fix my contact form?

If your current host blocks outbound mail or does not provide mailboxes on your domain, then yes, moving to WordPress hosting with email included removes the root cause rather than patching around it.

The short version

Send from a real address on your own domain, route it through SMTP, and make sure SPF, DKIM and DMARC are in place. Switchweb hosting plans include mailboxes on your domain, pre-configured SPF, and a DKIM wizard, so contact forms work reliably out of the box. If your form is still misbehaving, get in touch and we will happily take a look.


Looking to get started on Switchweb? Take a look at our website hosting plans or message us about a free trial.


Pete White

Pete White has worked in the UK web hosting industry for over 20 years, supporting businesses, charities, grassroots campaigns, and non-profit organizations to launch their digital presence with secure, high-performance hosting.

Post Your Comment