WordPress

WordPress Emails Not Sending? Causes, Fixes and Setting Up SMTP

Contact form messages and password resets vanishing or landing in spam? Learn why WordPress mail fails and how SMTP, SPF, DKIM and DMARC fix it.

By Zebra Hosting Cloud

Contact form messages that never arrive, password reset links that go missing, order confirmations in the spam folder: email problems are among the most frustrating WordPress issues, because they often fail silently. The causes are well understood, and the standard fix, sending through authenticated SMTP, is reliable. This guide explains why it happens and how to solve it.

How WordPress sends email by default

WordPress sends mail using a PHP function that hands the message to the web server's mail system. The message often has a generic sender such as [email protected] and no proof that your server is allowed to send for your domain. Receiving mail providers look at that and may treat it as suspicious, so messages are junked or rejected. Some hosting plans restrict or limit this kind of sending to prevent abuse, which means messages may never leave at all.

Common reasons for failure

Missing authentication

Receivers check SPF, DKIM and DMARC records. SPF lists which servers may send for your domain. DKIM adds a cryptographic signature. DMARC tells receivers what to do when checks fail. If these are missing or wrong, deliverability suffers. See our guide on business email for how these work together.

Mismatched sender address

Using a From address on a domain your server is not authorised to send for, such as a free webmail address in a contact form, causes failures. Use an address on your own domain.

Spam filtering

Even legitimate messages can be filtered if they look suspicious: no plain-text version, broken HTML, large images, or a poor sending reputation.

Plugin or configuration errors

Form plugins may have the wrong recipient, a mail template disabled, or a conflict with another plugin. Check the form's mail settings first.

Hosting restrictions

Some servers block outgoing mail on certain ports or limit messages per hour. Check your hosting account's mail limits and logs.

Problems at the receiving end

The recipient mailbox might be full, or a corporate filter might quarantine messages. Test with more than one destination, such as a different provider.

The fix: send via authenticated SMTP

SMTP lets WordPress send through a proper mail account or mail service, authenticated with a username and password. The messages then come from a server that is approved in your DNS records and has a good reputation.

  1. Choose a sending method. Use a mailbox on your own domain with your email hosting, or a transactional email service designed for application mail.
  2. Install an SMTP plugin from the official directory.
  3. Enter the settings: host, port, encryption (usually TLS), username and password.
  4. Set the From address to an address on your domain, and use a recognisable name.
  5. Send a test email from the plugin and confirm it arrives in the inbox, not spam.
  6. Add or update DNS records: SPF to include your sending server, DKIM as provided by your mail service, and a DMARC policy.

Store the SMTP password carefully. If the plugin allows it, define credentials in wp-config.php instead of the database, and keep that file protected.

Test properly and reduce spam risk

Send test messages to several providers and check the full headers of a received message. Look for SPF, DKIM and DMARC marked as pass. Online mail testing tools can score a test message and point out problems. Also test the real scenarios: submit your contact form, request a password reset and place a test order.

Reduce spam-folder risk

  • Use a consistent From address and name.
  • Write clear subject lines; avoid shouting and spammy phrases.
  • Include a plain-text alternative and keep HTML simple.
  • Do not send bulk marketing from your transactional setup; use a proper newsletter service with consent and unsubscribe links.
  • Keep your domain and server clean from spam and malware.

Forms, replies and logging

For contact forms, send the notification from your own address and set the visitor's email as the Reply-To header. That keeps authentication intact and still lets you reply directly. Also save entries in the dashboard where the form plugin allows it, so you do not lose enquiries when mail fails.

Logging and monitoring

Some SMTP plugins keep a log of sent messages and errors. A log shows whether WordPress tried to send, and whether the mail server accepted the message. If a message is accepted but never arrives, the issue is downstream: reputation, filtering or the receiving side. Check logs and alerts regularly on shops and lead-generation sites, where lost messages cost money.

What to do when a message goes missing

Work from the sender to the recipient. First, confirm the site tried to send, using the form's entry log or the SMTP plugin log. Second, confirm the mail server accepted the message. Third, check the spam and quarantine folders at the recipient. Fourth, send the same test to a different provider. This sequence narrows down whether the problem is in WordPress, in the mail setup or at the receiving end.

Email with Zebra Hosting

Our business email hosting gives you mailboxes on your own domain, which work well as the sender for WordPress SMTP, and Plesk helps you manage DNS-related settings for your domain. For help with the setup, the knowledgebase and support team are there in 17 languages.