Überwindung des PHPMailer-Hindernisses „SMTP-Fehler: Verbindung zum SMTP-Host konnte nicht hergestellt werden“
PHPMailer, eine beliebte PHP-Mail-Versandbibliothek, wirft manchmal das Problem aus Fehler „SMTP-Fehler: Verbindung zum SMTP-Host konnte nicht hergestellt werden.“ Dieses Problem kann trotz erfolgreichem Senden von E-Mails über E-Mail-Clients wie Thunderbird auftreten.
Untersuchen Sie zur Fehlerbehebung die in der funktionierenden Thunderbird-Konfiguration verwendeten Einstellungen und vergleichen Sie sie mit denen von PHPMailer. In der folgenden Tabelle werden die Hauptunterschiede hervorgehoben:
Setting | Thunderbird | PHPMailer |
---|---|---|
Server Name | mail.exampleserver.com | SMTP_HOST |
Port | 587 | SMTP_PORT |
Username | [email protected] | SMTP_USER |
Secure Authentication | No | SMTPAuth |
Connection Security | STARTTLS | Not specified |
Der bereitgestellte PHPMailer-Code:
$mail = new PHPMailer(); $mail->IsSMTP(); $mail->Host = SMTP_HOST; $mail->Port = SMTP_PORT; $mail->SMTPAuth = true; $mail->Username = SMTP_USER; $mail->Password = SMTP_PASSWORD; $mail->From = MAIL_SYSTEM; $mail->FromName = MAIL_SYSTEM_NAME; $mail->AddAddress($aSecuredGetRequest['email']); $mail->IsHTML(true);
Während diese Einstellungen der funktionierenden Thunderbird-Konfiguration ähneln, liegt der Hauptunterschied im Fehlen von Verbindungssicherheitsspezifikation im PHPMailer-Code. Um dieses Problem zu beheben, fügen Sie die folgende Zeile zu Ihrem PHPMailer-Skript hinzu:
$mail->SMTPSecure = 'STARTTLS';
Diese Zeile gibt an, dass die Verbindung zum SMTP-Server die STARTTLS-Verschlüsselung verwenden soll. Sobald diese Anpassung vorgenommen wurde, sollte Ihr PHPMailer-Skript erfolgreich E-Mails senden.
Hinweis: Wenn bei der Verwendung von PHPMailer Version 5.6 oder höher ein Fehler im Zusammenhang mit einem Fehler bei der Zertifikatüberprüfung auftritt, können Sie Folgendes implementieren Folgende Problemumgehung:
$mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) );
Denken Sie daran, dass diese Problemumgehung eine vorübergehende Maßnahme sein sollte und Sie das zugrunde liegende Zertifikatproblem beheben sollten, indem Sie das ungültige Zertifikat durch ein gültiges ersetzen eins.
Das obige ist der detaillierte Inhalt vonWarum kann mein PHPMailer-Code keine Verbindung zum SMTP-Host herstellen, während mein E-Mail-Client funktioniert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!