Troubleshoot PHP Email That Is Not Being Delivered

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.

admin

admin