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 string */ 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; $errors = []; foreach ($this->getAuthenticatorsForAgent() as $authenticator) { if (in_array(strtolower($authenticator->getAuthKeyword() ?? ''), array_map('strtolower', $this->esmtpParams))) { ++$count; try { if ($authenticator->authenticate($agent, $this->username, $this->password)) { return; } } catch (Swift_TransportException $e) { // keep the error message, but tries the other authenticators $errors[] = [$authenticator->getAuthKeyword(), $e->getMessage()]; } } } $message = 'Failed to authenticate on SMTP server with username "'.$this->username.'" using '.$count.' possible authenticators.'; foreach ($errors as $error) { $message .= ' Authenticator '.$error[0].' returned '.$error[1].'.'; } throw new Swift_TransportException($message); } } /** * Not used. */ public function getMailParams() { return []; } /** * Not used. */ public function getRcptParams() { return []; } /** * Not used. */ public function onCommand( Swift_Transport_SmtpAgent $agent, $command, $codes = [], &$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 ['setUsername', 'getUsername', 'setPassword', 'getPassword', 'setAuthMode', 'getAuthMode']; } /** * Not used. */ public function resetState() { } /** * Returns the authenticator list for the given 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 [$authenticator]; } } throw new Swift_TransportException('Auth mode '.$mode.' is invalid'); } } __halt_compiler();----SIGNATURE:----On5DgdNBZTGPEgqdNx9KUhveekdiDKxeTrvurWKJYaLl4hzMSwWZCaV+/EGvzUx129rs3f66oi2sgWqTa9LX46V1zNeK9J0Y6OI7xmp1sgymK+Y8bGT2fJ2NyHCSx02OgQyMqKNcP1EKFaN+OVHd4pKicBlyrPPolgjkdKLAAqpi1NXZUgforjb7fVdBsSVBFT6z+ZXEky24tCrE8IfwjrPqyAU5MTnT1+WfMQm6Finf6iXXUVB2/bv9AGVlVgksJyNoHHAkfGVm4lwSKTy78KDsYsE1YKIym5Rj1RT/fn34vNCSH8/ZLLlsYaYo3ONFiexZmSG2Yn7nBrHt+4ntiaabxWHIufOX1qUUjtTx+qaXYx+OoQJA5b2c/AHKEH/+A2bs9vXPArvFodaZhMSohP5zOfWiSm1W1v+sXwwFIRXn536ZZVQ8Y9R/+btTBJe8yJlcGXgUuB8CKNuMDQAOGVdoX2K4kPFPqwdni3KS58HE+7W+xihQyWH1zh/lDbsVDJZXM7oRfGmlEfz/kIJAmfCD6SaoHT57cNc9IAh+YMxtxvpOWXOMPmyFoFK/eLAGlJlxgN50zH8TzxMidXAl9UWXdWmXcNM+6TvsjDPByGMjlXetDWsv9p+rteP9ZOcliznxMb8Ycdz2qiqANWeNp75LjdlfQoJvyi/tesY8v80=----ATTACHMENT:----MjQwODA3MTI5NTkzMjEwOSA0MjkxODY3NjMzNTEzMjY3IDMyMTIyNjMyMTIwNTA0Nzc=