2017-01-12 1 views
2

Я использую PHPMailer с учетной записью электронной почты, которая должна менять пароль каждые 90 дней.Тестирование имени пользователя и пароля PHPMailer без отправки, т. Е. Проверить соединение

Можно ли проверить подключение PHPMailer к учетной записи, не отправив электронное письмо? В идеале я бы хотел, чтобы кнопка нажала кнопку «Проверить соединение», которая затем возвращает «Connection Successful» или «Connection Not Successful».

Обратите внимание, что это не проверка, можете ли вы подключиться к SMTP, но на самом деле проверьте имя пользователя и пароль и верните результат.

Я видел где-то кого-то упомянутого с помощью функции Connect(), но я не могу заставить это работать.

Спасибо.

+0

вы можете добавить, что вы пробовали до сих пор? – jbduzan

+0

После установки начального экземпляра я попробовал следующее: if ($ mail-> Connect()) { echo "Connection successful"; } else { echo "Ошибка подключения"; } – Magiclint

ответ

1

Вы знаете, что у вас уже есть код, который показывает, как это сделать? Это one of the examples provided with PHPMailer.

Вот большая его часть:

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"; 
}