/**
  * Try to authenticate the user with $email and $token.
  *
  * @param Swift_Transport_SmtpAgent $agent
  * @param string                    $email
  * @param string                    $token
  *
  * @return bool
  */
 public function authenticate(Swift_Transport_SmtpAgent $agent, $email, $token)
 {
     try {
         $param = $this->constructXOAuth2Params($email, $token);
         $agent->executeCommand("AUTH XOAUTH2 " . $param . "\r\n", array(235));
         return true;
     } catch (Swift_TransportException $e) {
         $agent->executeCommand("RSET\r\n", array(250));
         return false;
     }
 }
 /**
  * Try to authenticate the user with $username and $password.
  * @param Swift_Transport_SmtpAgent $agent
  * @param string $username
  * @param string $password
  * @return boolean
  */
 public function authenticate(Swift_Transport_SmtpAgent $agent, $username, $password)
 {
     try {
         $message = base64_encode($username . chr(0) . $username . chr(0) . $password);
         $agent->executeCommand(sprintf("AUTH PLAIN %s\r\n", $message), array(235));
         return true;
     } catch (Swift_TransportException $e) {
         $agent->executeCommand("RSET\r\n", array(250));
         return false;
     }
 }
 /**
  * Try to authenticate the user with $username and $password.
  * @param Swift_Transport_SmtpAgent $agent
  * @param string $username
  * @param string $password
  * @return boolean
  */
 public function authenticate(Swift_Transport_SmtpAgent $agent, $username, $password)
 {
     try {
         $agent->executeCommand("AUTH LOGIN\r\n", array(334));
         $agent->executeCommand(sprintf("%s\r\n", base64_encode($username)), array(334));
         $agent->executeCommand(sprintf("%s\r\n", base64_encode($password)), array(235));
         return true;
     } catch (Swift_TransportException $e) {
         $agent->executeCommand("RSET\r\n", array(250));
         return false;
     }
 }
 /**
  * Try to authenticate the user with $username and $password.
  *
  * @param Swift_Transport_SmtpAgent $agent
  * @param string                    $username
  * @param string                    $password
  *
  * @return boolean
  */
 public function authenticate(Swift_Transport_SmtpAgent $agent, $username, $password)
 {
     try {
         $challenge = $agent->executeCommand("AUTH CRAM-MD5\r\n", array(334));
         $challenge = base64_decode(substr($challenge, 4));
         $message = base64_encode($username . ' ' . $this->_getResponse($password, $challenge));
         $agent->executeCommand(sprintf("%s\r\n", $message), array(235));
         return true;
     } catch (Swift_TransportException $e) {
         $agent->executeCommand("RSET\r\n", array(250));
         return false;
     }
 }
 /**
  * Send our final message with all our data
  *
  * @param string $response Message 1 response (message 2)
  * @param string $username
  * @param string $password
  * @param string $timestamp
  * @param string $client
  * @param Swift_Transport_SmtpAgent $agent
  * @param bool $v2 Use version2 of the protocol
  * @return string
  */
 protected function sendMessage3($response, $username, $password, $timestamp, $client, Swift_Transport_SmtpAgent $agent, $v2 = true)
 {
     list($domain, $username) = $this->getDomainAndUsername($username);
     //$challenge, $context, $targetInfoH, $targetName, $domainName, $workstation, $DNSDomainName, $DNSServerName, $blob, $ter
     list($challenge, , , , , $workstation, , , $blob) = $this->parseMessage2($response);
     if (!$v2) {
         // LMv1
         $lmResponse = $this->createLMPassword($password, $challenge);
         // NTLMv1
         $ntlmResponse = $this->createNTLMPassword($password, $challenge);
     } else {
         // LMv2
         $lmResponse = $this->createLMv2Password($password, $username, $domain, $challenge, $client);
         // NTLMv2
         $ntlmResponse = $this->createNTLMv2Hash($password, $username, $domain, $challenge, $blob, $timestamp, $client);
     }
     $message = $this->createMessage3($domain, $username, $workstation, $lmResponse, $ntlmResponse);
     return $agent->executeCommand(sprintf("%s\r\n", base64_encode($message)), array(235));
 }