barbushin / php-imap

Manage mailboxes, filter/get/delete emails in PHP (supports IMAP/POP3/NNTP)
MIT License
1.66k stars 456 forks source link

ConnectionException "LOGIN failed." with office 365 since Microsoft activated two factor auth #705

Open miguelangelss4 opened 1 year ago

miguelangelss4 commented 1 year ago

Environment (please complete the following information):

I had this lib working since years ago, but microsoft decided add two factor auth to office 365 accounts, and it broked my connection. I get "LOGIN failed." error when I try to connect:

$server = "{outlook.office365.com:993/imap/ssl}INBOX";
//$server = "{outlook.office365.com:993/imap/ssl/novalidate-cert}INBOX";

$mbox_connection = new PhpImap\Mailbox($server, $email, $password, __DIR__ . '/files/');

try {
    $mailsIds = $mbox_connection->searchMailbox('ALL');
} catch(\Exception $ex) {
    die("<pre>".print_r($ex, true)."</pre>");
}

I had test this two $server address, and many others.

Email is my office 365 account, and password I tested my connection account password, and other password generated in the my account office 365 web: My account / Security Info / Add sign-in method / App password In adition, I had activated two factor auth for this account.

I get a ConnectionException:

PhpImap\Exceptions\ConnectionException Object ( [message:protected] => ["LOGIN failed."] [string:Exception:private] => [code:protected] => 0 [file:protected] => C:\wamp64\www\test-imap\vendor\php-imap\php-imap\src\PhpImap\Imap.php [line:protected] => 712 [trace:Exception:private] => Array ( [0] => Array ( [file] => C:\wamp64\www\test-imap\vendor\php-imap\php-imap\src\PhpImap\Mailbox.php [line] => 1725 [function] => open [class] => PhpImap\Imap [type] => :: [args] => Array ( [0] => {outlook.office365.com:993/imap/ssl/novalidate-cert}INBOX [1] => [EMAIL] [2] => [PASSWORD] [3] => 0 [4] => 0 [5] => Array ( )

                    )

            )

        [1] => Array
            (
                [file] => C:\wamp64\www\test-imap\vendor\php-imap\php-imap\src\PhpImap\Mailbox.php
                [line] => 1686
                [function] => initImapStream
                [class] => PhpImap\Mailbox
                [type] => ->
                [args] => Array
                    (
                    )

            )

        [2] => Array
            (
                [file] => C:\wamp64\www\test-imap\vendor\php-imap\php-imap\src\PhpImap\Mailbox.php
                [line] => 469
                [function] => initImapStreamWithRetry
                [class] => PhpImap\Mailbox
                [type] => ->
                [args] => Array
                    (
                    )

            )

        [3] => Array
            (
                [file] => C:\wamp64\www\test-imap\vendor\php-imap\php-imap\src\PhpImap\Mailbox.php
                [line] => 664
                [function] => getImapStream
                [class] => PhpImap\Mailbox
                [type] => ->
                [args] => Array
                    (
                    )

            )

        [4] => Array
            (
                [file] => C:\wamp64\www\test-imap\index.php
                [line] => 36
                [function] => searchMailbox
                [class] => PhpImap\Mailbox
                [type] => ->
                [args] => Array
                    (
                        [0] => ALL
                    )

            )

    )

[previous:Exception:private] => 
[xdebug_message] => ( ! ) PhpImap\Exceptions\ConnectionException: ["LOGIN failed."] in C:\wamp64\www\test-imap\vendor\php-imap\php-imap\src\PhpImap\Imap.php on line 712

Call Stack

TimeMemoryFunctionLocation

10.0005365632{main}( )...\index.php:0 20.0009368968PhpImap\Mailbox->searchMailbox( $criteria = 'ALL', $disableServerEncoding = ??? )...\index.php:36 30.0009368968PhpImap\Mailbox->getImapStream( $forceConnection = ??? )...\Mailbox.php:664 40.0009368968PhpImap\Mailbox->initImapStreamWithRetry( )...\Mailbox.php:469

)

MrMitch commented 1 year ago

@miguelangelss4 be careful, i think you just leaked your email address and your password in the exception that you copied, in the [args] section.

You can edit your issue it to censor/remove the information.

miguelangelss4 commented 1 year ago

@MrMitch thanks a lot!