The WordPress Email Authority
The recurring concepts behind WordPress email: the five-stage delivery chain from wp_mail() to the recipient’s mail server, what actually happened when Google’s Less Secure App access shut down, when a queue earns its keep and when it just adds a moving part, what a webhook is worth over a bounce log, and what an SMTP bounce code is really telling you. One entry per concept, kept current as the underlying pieces move.
Read How Email Works first. It maps the five-stage delivery chain (wp_mail() → PHPMailer → transport → relay → recipient mail server), and every other entry on this page assumes you already know which stage a decision belongs to. If you’ve arrived after a delivery failure and want the mental model before the fix, this is the one to open.
The five-stage delivery chain from wp_mail() to inbox, what the operator controls, and how SPF, DKIM, and DMARC work as a system.
Validate a Microsoft 365 or Google Workspace OAuth registration in Postman before wiring the client ID and secret into WP Mail SMTP, FluentSMTP, or Post SMTP.
How ESP delivery-status webhooks work in WordPress: what Postmark, Mailgun, SendGrid, SES and Mailjet send, how to receive them, and how to verify them.
The catalog of transactional emails WordPress core sends — comments, password resets, GDPR, updates, recovery mode — with trigger, default recipients, and the filters that control each one.
Google shut down Less Secure App access — consumer Gmail May 2022, Workspace May 2025. The three replacements (OAuth, App Password, switch provider) and which fits which WordPress use case.
Decoding the SMTP bounce codes WP Mail SMTP, FluentSMTP, and Post SMTP log – numeric code, enhanced status code, and Gmail/M365 variations.
Transactional email goes to one recipient following one action they initiated. Here is what WordPress core and WooCommerce send, and how the legal carve-out works.
wp_mail() sends email synchronously – every call blocks the PHP process until SMTP completes. A queue decouples sending from the page request. Here’s when that matters.
On WordPress.com, Automattic owns wp_mail’s transport and the sending domain. On self-hosted WordPress.org, the operator owns both. Every email-behaviour difference between the two platforms follows from that.