Source of file AuthHandler.php
Size: 6,034 Bytes - Last Modified: 2013-06-17T15:32:32+02:00
/home/theseer/Downloads/Symfony/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/AuthHandler.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269 | <?php /* * This file is part of SwiftMailer. * (c) 2004-2009 Chris Corbyn * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * An ESMTP handler for AUTH support. * * @package Swift * @subpackage Transport * @author Chris Corbyn */ class Swift_Transport_Esmtp_AuthHandler implements Swift_Transport_EsmtpHandler { /** * Authenticators available to process the request. * * @var Swift_Transport_Esmtp_Authenticator[] */ private $_authenticators = array(); /** * The username for authentication. * * @var string */ private $_username; /** * The password for authentication. * * @var string */ private $_password; /** * The auth mode for authentication. * * @var string */ private $_auth_mode; /** * The ESMTP AUTH parameters available. * * @var string[] */ private $_esmtpParams = array(); /** * Create a new AuthHandler with $authenticators for support. * * @param Swift_Transport_Esmtp_Authenticator[] $authenticators */ public function __construct(array $authenticators) { $this->setAuthenticators($authenticators); } /** * Set the Authenticators which can process a login request. * * @param Swift_Transport_Esmtp_Authenticator[] $authenticators */ public function setAuthenticators(array $authenticators) { $this->_authenticators = $authenticators; } /** * Get the Authenticators which can process a login request. * * @return Swift_Transport_Esmtp_Authenticator[] */ public function getAuthenticators() { return $this->_authenticators; } /** * Set the username to authenticate with. * * @param string $username */ public function setUsername($username) { $this->_username = $username; } /** * Get the username to authenticate with. * * @return string */ public function getUsername() { return $this->_username; } /** * Set the password to authenticate with. * * @param string $password */ public function setPassword($password) { $this->_password = $password; } /** * Get the password to authenticate with. * * @return string */ public function getPassword() { return $this->_password; } /** * Set the auth mode to use to authenticate. * * @param string $mode */ public function setAuthMode($mode) { $this->_auth_mode = $mode; } /** * Get the auth mode to use to authenticate. * * @return string */ public function getAuthMode() { return $this->_auth_mode; } /** * Get the name of the ESMTP extension this handles. * * @return boolean */ public function getHandledKeyword() { return 'AUTH'; } /** * Set the parameters which the EHLO greeting indicated. * * @param string[] $parameters */ public function setKeywordParams(array $parameters) { $this->_esmtpParams = $parameters; } /** * Runs immediately after a EHLO has been issued. * * @param Swift_Transport_SmtpAgent $agent to read/write */ public function afterEhlo(Swift_Transport_SmtpAgent $agent) { if ($this->_username) { $count = 0; foreach ($this->_getAuthenticatorsForAgent() as $authenticator) { if (in_array(strtolower($authenticator->getAuthKeyword()), array_map('strtolower', $this->_esmtpParams))) { $count++; if ($authenticator->authenticate($agent, $this->_username, $this->_password)) { return; } } } throw new Swift_TransportException( 'Failed to authenticate on SMTP server with username "' . $this->_username . '" using ' . $count . ' possible authenticators' ); } } /** * Not used. */ public function getMailParams() { return array(); } /** * Not used. */ public function getRcptParams() { return array(); } /** * Not used. */ public function onCommand(Swift_Transport_SmtpAgent $agent, $command, $codes = array(), &$failedRecipients = null, &$stop = false) { } /** * Returns +1, -1 or 0 according to the rules for usort(). * * This method is called to ensure extensions can be execute in an appropriate order. * * @param string $esmtpKeyword to compare with * * @return int */ public function getPriorityOver($esmtpKeyword) { return 0; } /** * Returns an array of method names which are exposed to the Esmtp class. * * @return string[] */ public function exposeMixinMethods() { return array('setUsername', 'getUsername', 'setPassword', 'getPassword', 'setAuthMode', 'getAuthMode'); } /** * Not used. */ public function resetState() { } // -- Protected methods /** * Returns the authenticator list for the given agent. * * @param Swift_Transport_SmtpAgent $agent * * @return array */ protected function _getAuthenticatorsForAgent() { if (!$mode = strtolower($this->_auth_mode)) { return $this->_authenticators; } foreach ($this->_authenticators as $authenticator) { if (strtolower($authenticator->getAuthKeyword()) == $mode) { return array($authenticator); } } throw new Swift_TransportException('Auth mode '.$mode.' is invalid'); } } |