HomeGuides › Email that doesn’t arrive

WordPress contact form not sending email: what to check, in order

Every WordPress form plugin sends through wp_mail(), which by default uses your host's PHP mail. When messages stop arriving, the fault is nearly always one of four things: PHP mail is disabled, an SMTP plugin can't log in, the From address isn't on your domain, or the message is being filed as spam. Work through them in that order.

1 · Did WordPress even hand it over?

Look at what the visitor sees after pressing Send. An error means wp_mail() returned false and PHPMailer, the library inside it, gave a reason — typically “Could not instantiate mail function.” That sentence means PHP's mail() isn't working on this server. Most form plugins swallow that reason; your host's error log may have it.

2 · Is an SMTP plugin in the way?

If you use WP Mail SMTP, FluentSMTP or similar, its own log and test email come first. An expired password, a changed app password or a mailbox that now requires two-step sign-in breaks every form on the site at once.

3 · Is the From address on your domain?

A notification “from” the visitor's Gmail address, sent by your web server, fails the receiving server's checks. Use an address such as wordpress@yourdomain in From, and put the visitor's address in Reply-To so you can still answer them.

4 · Is it arriving, but as spam?

Search the spam folder and your mail provider's quarantine. If it's there, the headers of that message tell you exactly why — the receiving server records its SPF, DKIM and DMARC verdicts at the top. The guide to emails going to spam has a checker that reads them for you.

5 · Meanwhile, stop losing enquiries

A form that only emails is a form that can lose a customer silently. Mailbag Contact Form writes each entry to its own table before the email is attempted, so a broken mail setup never costs you the message. Each entry shows Sent to your mail server, Failed with the exact error, or Not sent; you can resend it once the mail works again, and a notice on Mailbag's screens counts the notifications that failed and says when the problem started.

Mailbag Contact Form is a free contact form that saves every entry before it sends anything, and shows you what happened to each email.

See what it does