Clivern / Imap

:mailbox_with_mail: Access Mailbox Using PHP IMAP.
MIT License
31 stars 16 forks source link

Content-Transfer-Encoding: base64 #17

Open radenvodka opened 4 years ago

radenvodka commented 4 years ago

failed to read Content-Transfer-Encoding: base64 message

Clivern commented 4 years ago

Hi @radenvodka,

Can you please provide the full error message or stacktrace?

radenvodka commented 4 years ago

[SOLVED]

Entire message :

0 - Message header 1 - MULTIPART/ALTERNATIVE 1.1 - TEXT/PLAIN 1.2 - TEXT/HTML 2 - file.ext

https://github.com/Clivern/Imap/blob/0da2fd37d95470f9be1af94d78509a49fb9a30cd/src/Core/Message/Body.php

Entire message default is : 2

using : $message->body()->getMessage('1.1');

Clivern commented 4 years ago

nice 👍 . closing the issue then.

radenvodka commented 4 years ago

can you double check?

example:

$messages = $mailbox->getMessages(); foreach ($messages as $message) { echo "Subject: " . $message->header()->get('subject');

if($message->body()->getMessage() != ''){
    print_r($message->body()->getMessage() );
}
echo "\r\n";
if($message->body()->getMessage('1.1') != ''){
    print_r($message->body()->getMessage() );
}
echo "\r\n";

}

Clivern commented 4 years ago

Can you try this

use Clivern\Imap\MailBox;

$mailbox = new MailBox($connection);
// Get Folders
$mailbox->getFolders();
// Update Folder
$mailbox->setFolder("[Gmail]/All Mail");
// Count Messages in Current Folder
$mailbox->count();

$messages = $mailbox->getMessages();

foreach ($messages as $message) {
    echo "Subject: " . $message->header()->get('subject');
    echo "<br/>";
    echo $message->body()->getMessage('1.1');
}

https://github.com/Clivern/Imap/blob/master/src/Core/Message/Body.php#L73

radenvodka commented 4 years ago
$connection = new Connection( "outlook.office365.com","993","XXXX@outlook.com","XXXX","/ssl" );
$mailbox    = new MailBox($connection);
$connection->connect();
print_r($connection->check());

$arras      = array('1','1.1','1.2','2');

$mailbox->setFolder("Inbox");
$messages = $mailbox->getMessages();

foreach ($messages as $message) {
    foreach ($arras as $key => $options) {
        echo "[+] Check Message Type ".$options."\r\n";
        preg_match_all('/\[xxx(.*?)\]/m', $message->body()->getMessage($options) , $mau);
        if($mau[1][0]){
            echo "[+][INBOX YAHOO] Subject ".$message->header()->get('subject')."\r\n";

            $message->action()->delete();
            break;
        }
        if($options >= 2){
            $message->action()->delete();
        }
    }
}

not all messages are read with Entire message = 2 so the solution is as above.