56 lines
1.9 KiB
Plaintext
56 lines
1.9 KiB
Plaintext
|
<?php
|
||
|
/**
|
||
|
* This uses the SMTP class alone to check that a connection can be made to an SMTP server,
|
||
|
* authenticate, then disconnect
|
||
|
*/
|
||
|
|
||
|
//SMTP needs accurate times, and the PHP time zone MUST be set
|
||
|
//This should be done in your php.ini, but this is how to do it if you don't have access to that
|
||
|
date_default_timezone_set('Etc/UTC');
|
||
|
|
||
|
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 (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 (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";
|
||
|
}
|
||
|
//Whatever happened, close the connection.
|
||
|
$smtp->quit(true);
|