public function authenticate(string $username, string $password): ConnectionInterface
    {
        $errorMessage = null;
        $errorNumber  = 0;
        \set_error_handler(static function ($nr, $message) use (&$errorMessage, &$errorNumber) {
            $errorMessage = $message;
            $errorNumber = $nr;
        });

        $resource = \imap_open(
            $this->getServerString(),
            $username,
            $password,
            $this->options,
            $this->retries,
            $this->parameters
        );

        \restore_error_handler();

        if (false === $resource || null !== $errorMessage) {
            throw new AuthenticationFailedException(\sprintf(
                'Authentication failed for user "%s"%s',
                $username,
                null !== $errorMessage ? ': ' . $errorMessage : ''
            ), $errorNumber);
        }

        $check = \imap_check($resource);

        if (false === $check) {
            throw new ResourceCheckFailureException('Resource check failure');
        }

        $mailbox       = $check->Mailbox;
        $connection    = $mailbox;
        $curlyPosition = \strpos($mailbox, '}');
        if (false !== $curlyPosition) {
            $connection = \substr($mailbox, 0, $curlyPosition + 1);
        }

        // These are necessary to get rid of PHP throwing IMAP errors
        \imap_errors();
        \imap_alerts();

        return new Connection(new ImapResource($resource), $connection);
    }
public function authenticate(string $username, string $password): ConnectionInterface
    {
        $errorMessage = null;
        $errorNumber  = 0;
        \set_error_handler(static function ($nr, $message) use (&$errorMessage, &$errorNumber) {
            $errorMessage = $message;
            $errorNumber = $nr;
        });

        $resource = \imap_open(
            $this->getServerString(),
            $username,
            $password,
            $this->options,
            $this->retries,
            $this->parameters
        );

        \restore_error_handler();

        if (false === $resource || null !== $errorMessage) {
            throw new AuthenticationFailedException(\sprintf(
                'Authentication failed for user "%s"%s',
                $username,
                null !== $errorMessage ? ': ' . $errorMessage : ''
            ), $errorNumber);
        }

        $check = \imap_check($resource);

        if (false === $check) {
            throw new ResourceCheckFailureException('Resource check failure');
        }

        $mailbox       = $check->Mailbox;
        $connection    = $mailbox;
        $curlyPosition = \strpos($mailbox, '}');
        if (false !== $curlyPosition) {
            $connection = \substr($mailbox, 0, $curlyPosition + 1);
        }

        // These are necessary to get rid of PHP throwing IMAP errors
        \imap_errors();
        \imap_alerts();

        return new Connection(new ImapResource($resource), $connection);
    }
public function authenticate ( string $ username , string $ password ) : ConnectionInterface { $ errorMessage = null ; $ errorNumber = 0 ; \ set_error_handler ( static function ( $ nr , $ message ) use ( & $ errorMessage , & $ errorNumber ) { $ errorMessage = $ message ; $ errorNumber = $ nr ; } ) ; $ resource = \ imap_open ( $ this -> getServerString ( ) , $ username , $ password , $ this -> options , $ this -> retries , $ this -> parameters ) ; \ restore_error_handler ( ) ; if ( false === $ resource || null !== $ errorMessage ) { throw new AuthenticationFailedException ( \ sprintf ( 'Authentication failed for user "%s"%s' , $ username , null !== $ errorMessage ? ': ' . $ errorMessage : '' ) , $ errorNumber ) ; } $ check = \ imap_check ( $ resource ) ; if ( false === $ check ) { throw new ResourceCheckFailureException ( 'Resource check failure' ) ; } $ mailbox = $ check -> Mailbox ; $ connection = $ mailbox ; $ curlyPosition = \ strpos ( $ mailbox , '}' ) ; if ( false !== $ curlyPosition ) { $ connection = \ substr ( $ mailbox , 0 , $ curlyPosition + 1 ) ; } // These are necessary to get rid of PHP throwing IMAP errors \ imap_errors ( ) ; \ imap_alerts ( ) ; return new Connection ( new ImapResource ( $ resource ) , $ connection ) ; }
Authenticate connection.

@param string $username Username
@param string $password Password

@throws AuthenticationFailedException

@return ConnectionInterface
Authenticate connection .