You build a contact form. You submit it. The "Thank you" message shows up. Everything looks fine.
Three weeks later a client mentions they never heard back. You check WordPress — the submission is right there in the database. The form worked. The email didn't.
This is one of those bugs that stays invisible until it costs you something, and it's far more common than it should be.
Why it happens
When WordPress calls wp_mail(), it hands the message to PHP's built-in mail() function, which asks your web server to deliver it directly. On a dedicated server with a properly configured MTA, this works. On the shared hosting plans that most WordPress sites actually run on, three things go wrong:










