Srv Bebeboutik 340bc7c146 push site
2016-01-04 12:48:08 +01:00

87 lines
2.7 KiB
PHP
Executable File

<?php
/**
* Swift Mailer PopB4Smtp Authenticator Mechanism
* Please read the LICENSE file
* @author Chris Corbyn <chris@w3style.co.uk>
* @package Swift_Authenticator
* @license GNU Lesser General Public License
*/
require_once dirname(__FILE__) . "/../ClassLoader.php";
Swift_ClassLoader::load("Swift_Authenticator");
Swift_ClassLoader::load("Swift_LogContainer");
/**
* Swift PopB4Smtp Authenticator
* This form of authentication requires a quick connection to be made with a POP3 server before finally connecting to SMTP
* @package Swift_Authenticator
* @author Chris Corbyn <chris@w3style.co.uk>
*/
class Swift_Authenticator_PopB4Smtp implements Swift_Authenticator
{
protected $connection = null;
/**
* Constructor
* @param mixed Swift_Authenticator_PopB4Smtp_Pop3Connection or string FQDN of POP3 server
* @param int The remote port number
* @param int The level of encryption to use
*/
public function __construct($conn=null, $port=110, $encryption=0)
{
if (is_object($conn)) $this->connection = $conn;
else
{
Swift_ClassLoader::load("Swift_Authenticator_PopB4Smtp_Pop3Connection");
$this->connection = new Swift_Authenticator_PopB4Smtp_Pop3Connection($conn, $port, $encryption);
}
}
/**
* Try to authenticate using the username and password
* Returns false on failure
* @param string The username
* @param string The password
* @param Swift The instance of Swift this authenticator is used in
* @return boolean
*/
public function isAuthenticated($user, $pass, Swift $swift)
{
$log = Swift_LogContainer::getLog();
if ($log->hasLevel(Swift_Log::LOG_EVERYTHING))
{
$log->add("Trying POP3 Before SMTP authentication. Disconnecting from SMTP first.");
}
$swift->disconnect();
try {
$this->connection->start();
$this->connection->assertOk($this->connection->read());
$this->connection->write("USER " . $user);
$this->connection->assertOk($this->connection->read());
$this->connection->write("PASS " . $pass);
$this->connection->assertOk($this->connection->read());
$this->connection->write("QUIT");
$this->connection->assertOk($this->connection->read());
$this->connection->stop();
} catch (Swift_ConnectionException $e) {
if ($log->hasLevel(Swift_Log::LOG_ERRORS))
{
$log->add("POP3 authentication failed.");
}
return false;
}
$options = $swift->getOptions();
$swift->setOptions($options | Swift::NO_POST_CONNECT);
$swift->connect();
$swift->setOptions($options);
return true;
}
/**
* Return the name of the AUTH extension this is for
* @return string
*/
public function getAuthExtensionName()
{
return "*PopB4Smtp";
}
}