Heim >Backend-Entwicklung >PHP-Tutorial >Warum kann mein PHPMailer-Code keine Verbindung zum SMTP-Host herstellen, während mein E-Mail-Client funktioniert?

Warum kann mein PHPMailer-Code keine Verbindung zum SMTP-Host herstellen, während mein E-Mail-Client funktioniert?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-02 12:22:10215Durchsuche

Why Does My PHPMailer Code Fail to Connect to the SMTP Host, While My Email Client Works?

Ü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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn