Contact Form 7 Not Sending Email
An error message, a success message with no email, and a visitor copy that never shows up are three different Contact Form 7 problems. Here is how to tell which one you have and fix that one.
Contact Form 7 not sending email? Your visitor fills in the form and sees “There was an error trying to send your message. Please try again later.”
Or the form says “Thank you for your message. It has been sent.” and nothing reaches your inbox. Or your copy turns up and the confirmation your visitor should get never does.
Confused? It isn’t you: the form shows the same words for different failures, and its second email can fail without telling anyone. It’s fixable, and here’s how to read what your visitor sees.
Contact Form 7 not sending email? Start with what your visitor sees
Submit your form with your own address and read the message that comes back. These are the plugin’s default messages (they can be edited on the Messages tab).
| What you see | What it means |
|---|---|
| “There was an error trying to send your message. Please try again later.” | A failed send, or a spam verdict. Flamingo shows which. |
| “Thank you for your message. It has been sent.” and no email | WordPress accepted the email, or the form was told to skip it. |
| Your email arrives and your visitor’s copy doesn’t | Mail (2), the second email, is off, misaddressed or failed unreported. |
The error message can mean a failed send or a spam verdict
By default, Contact Form 7 shows that sentence for two results: WordPress reported that it couldn’t send the email, or Contact Form 7 judged the submission to be spam and sent nothing.
Flamingo, a free plugin that stores submissions, tells them apart. One catch: it only has messages sent while it was active. Contact Form 7’s own page on Flamingo says the form plugin “doesn’t store submitted messages anywhere.”
If you don’t have it yet, install Flamingo, activate it and submit the form again. Then:
- Go to Flamingo > Inbound Messages.
- Under Inbox or Spam, find your message and click View.
- Read the line that starts Submission result:. It says
mail_sent,mail_failedorspam.
mail_failed: WordPress couldn’t send the email
WordPress’s mail function told Contact Form 7 the email didn’t go out. The good news: each mail_failed message sits in Flamingo’s Inbox with everything your visitor typed, so you can reply by hand.
Open Contact > Contact Forms, click your form, and on the Mail tab make sure To holds a real address you read. Then skip down to the sending side: what happens to an email after Contact Form 7 hands it to WordPress.
spam: Contact Form 7 held the message back
No email was sent. The message is under Spam, where you can open and read it, and a line starting Spam log: gives the reason, such as a disallowed word.
When the form says sent and nothing arrives, check these settings first
The success message doesn’t mean the email arrived. Check your spam folder, then open Contact > Contact Forms, click your form, and work through these:
- On the Mail tab, look at To. A new form uses
[_site_admin_email], your site’s admin email address, so check somebody reads it. - Look at From. It should be an address on your site’s own domain, with your visitor in Additional headers as
Reply-To: [your-email](the default). - Click Save. Change From and save again if you now see the warning “Sender email address does not belong to the site domain.” Contact Form 7’s documentation says mail servers are likely to treat an address like that as spoofed.
- Open the Additional Settings tab. A line reading
demo_mode: onorskip_mail: onmakes the form send nothing and still show the success message. Delete the line and click Save. - Submit the form again and check your inbox.
Still nothing? Then the email went missing after WordPress accepted it.
Google’s sender guidelines require everyone who emails Gmail accounts to set up SPF or DKIM authentication. Those are DNS records that prove an email really came from your domain, and email sent straight from a web server often has neither.
Skip down to the sending side. (On Ninja Forms too? Here’s why Ninja Forms emails aren’t sending.)
When your copy arrives and Mail (2) doesn’t, check the Mail (2) settings
Mail (2) is Contact Form 7’s second email, the one often used for your visitor’s copy. On a new form it’s switched off. And when we made it fail in a test, the visitor still saw the success message and Flamingo still recorded mail_sent.
Nobody tells you, so check it yourself:
- If you want your visitor to get a copy, scroll to the Mail (2) heading on the Mail tab and tick Use Mail (2).
- Make its To match the email field on the Form tab. The default form’s field is
[email* your-email], so To is[your-email]. - Click Save. A tag that matches no field gets the warning “Invalid mailbox syntax is used.”
- Submit the form yourself and look for the copy.
“Unsafe email config” is a warning, and the email still sends
After saving, you may also see “Unsafe email config is used without sufficient protection.” It doesn’t stop the email: in our test, Mail (2) was still handed to WordPress with the warning showing.
The warning clears if you switch Mail (2) off or send it to a fixed address. If you keep the visitor copy, Contact Form 7’s page for that warning explains what it’s asking for.
So if the box is ticked, the tag matches and there’s still no copy, that’s the sending side too.
When the settings are clean, fix the sending side
If Flamingo says mail_failed, or your settings check out and email still goes missing, how your site sends email has to change. That’s the problem we built SendWP for, so it’s what we’d suggest.
It’s a paid service. Once your site is connected, every email WordPress sends goes out through SendWP instead of your web host. Contact Form 7 hands both of its emails to WordPress’s mail function, so both go that way.
SPF and DKIM records are a separate step, and SendWP helps you with it. Here’s how to install the SendWP plugin and connect it:
- Go to Plugins > Add Plugin, search SendWP, click Install Now, then Activate.
- In the notice at the top of the screen, click Connect or register.
- On the Tools > SendWP screen, click Connect to SendWP, then register or log in and follow the prompts to authorize the connection.
- Submit your form again with your own address and check your inbox. If Use Mail (2) is on, look for the visitor’s copy.
Keep your messages in Flamingo, then fix the one problem you have
You can now read what your form is telling you and fix the problem you have. With Flamingo active, a failed send no longer costs you the message.
A wrong From address, a leftover demo_mode line, a Mail (2) tag that matches nothing: those are yours to fix, and they’re free. If the cause turns out to be the sending side, we believe SendWP is the best option. It’s a paid service, and you can get started for $1 your first month.