Last updated: August 28, 2026.
A successful send call means a server accepted the message; it does not prove inbox delivery. Find the last system that accepted it, then inspect that system’s response or log.
Enable temporary SMTP diagnostics
<?php
use PHPMailer\PHPMailer\SMTP;
$mail->SMTPDebug = SMTP::DEBUG_SERVER;
$mail->Debugoutput = static function (string $line, int $level): void {
error_log('SMTP ' . $level . ': ' . $line);
};Work through the delivery chain
- Confirm sender, recipient, host, port, and TLS mode.
- Inspect provider logs for rejection, deferral, or delivery.
- Verify SPF, DKIM, and DMARC alignment.
- Test a simple message without attachments.
- Check suppression lists, spam placement, and later bounces.
Reference: PHPMailer troubleshooting guide.
For a PHPRunner-oriented configuration walkthrough, see this SMTP email guide.