Webklex / php-imap

PHP-IMAP is a wrapper for common IMAP communication without the need to have the php-imap module installed / enabled. The protocol is completely integrated and therefore supports IMAP IDLE operation and the "new" oAuth authentication process as well.
https://www.php-imap.com
MIT License
320 stars 151 forks source link

TNEF support #21

Open DjeyKey opened 4 years ago

DjeyKey commented 4 years ago

Hi everyone,

Im using the lib 2.1.8 on Laravel 8.0.2 / PHP 7.4 and an MS exchange server. Im able to connect to the account, count the number of emails in a specific folder, but cannot get the messages. Here's the code and the stack error.

Conf imap :


$oClient = new Client([
     'host'  => 'Server',
        'port'  => 993,
        'protocol'  => 'imap', //might also use imap, [pop3 or nntp (untested)]
        'encryption'    => 'ssl', // Supported: false, 'ssl', 'tls'
        'validate_cert' => true,
        'username' => 'name@dns.com',
        'password' => 'password'
    ]);
'options' => [
        'delimiter' => '/',
        'fetch_body' => true,
        'fetch_flags' => true,
        'message_key' => 'list',
        'fetch_order' => 'asc',
        'open' => [
            // 'DISABLE_AUTHENTICATOR' => 'GSSAPI'
        ],
        'decoder' => [
            'message' => 'utf-8', // mimeheader
            'attachment' => 'utf-8' // mimeheader
        ]
    ]

Connect : OK Count messages : OK Get All messages from folder : KO

Code :

$oClient->connect();
    $oFolder = $oClient->getFolder('Orange');
    $count = $oFolder->query()->all()->count();
    $messages = $oFolder->query()->all()->get();
    echo "$count";

Error seems to append when fecthing the messages.

Capture d’écran 2020-10-08 095712

Thx, Djey

Webklex commented 4 years ago

Hi @DjeyKey , thanks for your well written report. I'm just missing one important thing: how can I reproduce this behavior?

Please try to narrow it down by sending yourself a simple test email and try to fetch just this one.

$count = $oFolder->query()->subject("test")->count();
$messages = $oFolder->query()->subject("test")->get();
echo "$count";

..then try to expand the amount of mails:

$count = $oFolder->query()->all()->limit(5)->count();
$messages = $oFolder->query()->limit(5)->get();
echo "$count";

..until you find the one that fails. If you can identify a single troubling email, please dump the complete (anonymized) message structure $message->getStructure() and post it here or send it to github@webklex.com if you want to keep it "private".

Best regards,

DjeyKey commented 4 years ago

Thanks for your reply. Research for "troubling" email is done, but i cant get the structure, i still got the same error. Additionnal information about the "troubling" email :

I just sent you the message for some privacy, this is a ZIP for keeping its original structure. Best regards

DjeyKey commented 4 years ago

After few exchage with Webklex support,

i tried as advised to cahnge the conf param from "imap" to ""legacy-imap" but this protocol dont seems to be effective, because i get a client connection error. Anyway, most of my investigations are coming clother to the TNEF encapsluation from MS excahnge when theres multipart messages and attachments.