2017-01-12 2 views
2

Ich benutze PHPMailer mit einem E-Mail-Account, dessen Passwort alle 90 Tage geändert werden muss.Testen von PHPMailer Benutzername und Passwort ohne zu senden, d. H. Verbindung überprüfen

Ist es möglich, die PHPMailer-Verbindung zum Konto zu überprüfen, ohne tatsächlich eine E-Mail zu senden? Idealerweise möchte ich eine Schaltfläche, auf die der Benutzer mit dem Titel "Verbindung prüfen" klickt, die dann "Verbindung erfolgreich" oder "Verbindung nicht erfolgreich" zurückgibt.

Hinweis, dies ist nicht zu prüfen, ob Sie eine Verbindung mit dem SMTP herstellen können, sondern tatsächlich den Benutzernamen und das Kennwort überprüfen und ein Ergebnis zurückgeben.

Ich habe irgendwo jemanden gesehen, der die Connect() Funktion benutzt, aber ich kann das nicht funktionieren.

Danke.

+0

können Sie hinzufügen, was Sie bisher versucht haben? – jbduzan

+0

Nach dem Festlegen der ersten Instanz habe ich Folgendes versucht: if ($ mail-> Connect()) { echo "Verbindung erfolgreich"; } sonst { echo "Verbindungsfehler"; } – Magiclint

Antwort

1

Sie wissen, dass Sie bereits Code haben, der zeigt, wie dies zu tun ist? Es ist one of the examples provided with PHPMailer.

Hier ist der Großteil davon:

require '../PHPMailerAutoload.php'; 
//Create a new SMTP instance 
$smtp = new SMTP; 
//Enable connection-level debug output 
$smtp->do_debug = SMTP::DEBUG_CONNECTION; 
try { 
    //Connect to an SMTP server 
    if (!$smtp->connect('mail.example.com', 25)) { 
     throw new Exception('Connect failed'); 
    } 
    //Say hello 
    if (!$smtp->hello(gethostname())) { 
     throw new Exception('EHLO failed: ' . $smtp->getError()['error']); 
    } 
    //Get the list of ESMTP services the server offers 
    $e = $smtp->getServerExtList(); 
    //If server can do TLS encryption, use it 
    if (is_array($e) && array_key_exists('STARTTLS', $e)) { 
     $tlsok = $smtp->startTLS(); 
     if (!$tlsok) { 
      throw new Exception('Failed to start encryption: ' . $smtp->getError()['error']); 
     } 
     //Repeat EHLO after STARTTLS 
     if (!$smtp->hello(gethostname())) { 
      throw new Exception('EHLO (2) failed: ' . $smtp->getError()['error']); 
     } 
     //Get new capabilities list, which will usually now include AUTH if it didn't before 
     $e = $smtp->getServerExtList(); 
    } 
    //If server supports authentication, do it (even if no encryption) 
    if (is_array($e) && array_key_exists('AUTH', $e)) { 
     if ($smtp->authenticate('username', 'password')) { 
      echo "Connected ok!"; 
     } else { 
      throw new Exception('Authentication failed: ' . $smtp->getError()['error']); 
     } 
    } 
} catch (Exception $e) { 
    echo 'SMTP error: ' . $e->getMessage(), "\n"; 
} 
Verwandte Themen