How to create a Joomla 6 module with YOOtheme Builder Emails going to spam: setting up SPF, DKIM and DMARC Joomla on LiteSpeed: CSS and JavaScript 403 errors with query strings Joomla 3 to Joomla 6 with T3 and Purity III: a migration case study Website hacked? What to do first and mistakes to avoid How to import Excel into WordPress with a custom plugin ChatGPT Ads: Paid Advertising Is Challenging Google Ads Ecommerce localization in Italy: catalogue, checkout and technical support Italian web developer for website support and local coordination Italian website localization: more than translating web content Taking over an existing Italian website without rebuilding it Website localization in Italy: a technical guide for international companies WordPress Dashboard Won't Load: 8 Causes and How to Fix Them WordPress Not Working: What to Check Before Panicking WordPress Site Stuck After Update: How to Recover It How to create a Joomla 6 module with YOOtheme Builder Emails going to spam: setting up SPF, DKIM and DMARC Joomla on LiteSpeed: CSS and JavaScript 403 errors with query strings Joomla 3 to Joomla 6 with T3 and Purity III: a migration case study Website hacked? What to do first and mistakes to avoid How to import Excel into WordPress with a custom plugin ChatGPT Ads: Paid Advertising Is Challenging Google Ads Ecommerce localization in Italy: catalogue, checkout and technical support Italian web developer for website support and local coordination Italian website localization: more than translating web content Taking over an existing Italian website without rebuilding it Website localization in Italy: a technical guide for international companies WordPress Dashboard Won't Load: 8 Causes and How to Fix Them WordPress Not Working: What to Check Before Panicking WordPress Site Stuck After Update: How to Recover It

WordPress email and SMTP errors: trace delivery failures

Author Graziano De Maio - Gdmtech
I wish you a good read and remember: if after reading this article you need help, don't hesitate to contact me.
Author: Graziano De Maio | Founder of Gdmtech
Table of contents

When WordPress emails do not arrive, first locate the break in the journey: did the site generate the message, did the sending service accept it, or did the recipient’s system filter it? Installing a different SMTP plugin before answering that question can leave the underlying problem unchanged.

This guide diagnoses forms, notifications and transactional messages. Transport configuration is one stage in that process. A successful SMTP test does not establish that every site feature generates the correct notification.

Separate generation, submission and delivery

StageUseful evidence
Application event creates a notificationPlugin configuration and event record
WordPress passes the message to the mail systemApplication result or integration log
Sending service accepts the messageSMTP response or provider message identifier
Recipient server handles itDelivery, rejection or deferral status from the provider
Message appears in the mailboxRecipient check, spam folder and mailbox rules

The wp_mail() documentation explicitly distinguishes a successful return value from confirmed receipt. Follow the evidence across stages instead of asking the SMTP plugin alone to prove the entire journey.

Investigate notifications that are never generated

Perform one action using an address you control and record the time. Check that the notification is enabled, its recipient is correct and any conditional rules are satisfied. An on-screen confirmation does not prove email delivery.

Determine whether every email fails or only one feature. If the transport test works but the form produces no send event, investigate the form’s settings and logs. If the feature queues messages, check that the scheduled work runs before changing SMTP credentials.

For a hypothetical order notification configured to run after a status transition, repeating the SMTP test does not trigger that business rule. Reproduce the required event and inspect its outcome.

This separation is useful when several plugins send messages through the same transport. A failure limited to one notification has a different starting point from a site-wide connection error.

Interpret SMTP errors before changing settings

Keep the complete response code and message, removing credentials, tokens and personal data. The SMTP standard distinguishes temporary 4xx conditions from permanent 5xx rejection of the attempt. The response text and provider documentation explain the particular reason.

ObservationNext check
Connection refused or timed outHost, port, outbound network access and service status
Authentication failureAccount, configured secret and required authentication method
TLS negotiation failureSupported combination of host, port and encryption
Sender not authorisedVerified address or domain in the sending account
Quota or rate limit reachedAccount limits, sending frequency and queue handling

Use the provider’s specified configuration rather than trying random ports and encryption modes. Some services require a particular authentication method; a webmail password may not be the credential expected by the integration.

Disabling certificate verification is not a routine fix. Resolve the certificate, connection or configuration problem at the corresponding layer.

Trace messages accepted by the sending service

Find the message identifier in the provider’s dashboard. Distinguish initial acceptance, deferral, rejection and delivery to the remote server. Remote acceptance still does not establish inbox placement because recipient filters and rules can intervene.

Check spam, incorrect addresses and any provider suppression list. Preserve bounce reasons before retrying. Repeated resubmissions can create duplicates when a temporary condition clears.

For contact forms, use an authorised website sender and place the visitor’s address in the integration’s appropriate reply field. Do not assume the site can authenticate mail as any domain entered by a visitor.

A useful incident record links one controlled form submission to one provider event and the recipient’s observation. Without that link, it is easy to compare a successful test with an unrelated missing notification.

Check domain authentication and received headers

SPF, DKIM and DMARC concern message authorisation and authentication. Review DNS records and the headers of an actually received message against the sending provider’s instructions. Assess the visible sender domain against DMARC alignment requirements as well.

The official Gmail sender guidelines describe requirements and sending conditions. Authentication is an important check, but it does not guarantee primary-inbox placement for every message.

Before editing DNS, inventory every service sending for the domain: company email, the website and other platforms. Correcting WordPress delivery must not exclude another authorised sender.

Test the actual notification after the fix

Run both the transport test and the application action: form submission, password recovery or an order notification in an appropriate test environment. Check recipient, sender, reply address, links and attachments where applicable. Use controlled mailboxes rather than sending test messages to customers.

Match logs with receipt and look for duplicate sends, including those caused by two active integrations. Retain only the logging data needed for diagnosis; message bodies and password-reset tokens should not become an unnecessarily accessible technical archive.

If site emails remain missing, I can trace the WordPress sending process and establish whether the intervention belongs in the form, transport or domain authentication configuration.

Author Graziano De Maio - Gdmtech
I wish you a good read and remember: if after reading this article you need help, don't hesitate to contact me.
Author: Graziano De Maio | Founder of Gdmtech