From e8b73b4943cceaa32d3dd5d2e0d7aef15b51a39c Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Tue, 31 May 2022 23:53:57 +0200 Subject: [PATCH] Bugfix: message flags/keywords are 'atom' and should be Utf7 modified --- .../v/0.0.0/app/libraries/MailSo/Imap/Commands/Folders.php | 4 ++-- .../v/0.0.0/app/libraries/MailSo/Imap/Commands/Messages.php | 2 ++ snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php | 2 +- snappymail/v/0.0.0/app/libraries/MailSo/Mail/Message.php | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Commands/Folders.php b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Commands/Folders.php index 541628cc7..5f0c0da2f 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Commands/Folders.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Commands/Folders.php @@ -333,7 +333,7 @@ trait Folders $key = $oResponse->OptionalResponse[0]; if (\count($oResponse->OptionalResponse) > 1) { if ('PERMANENTFLAGS' === $key && \is_array($oResponse->OptionalResponse[1])) { - $oResult->PermanentFlags = $oResponse->OptionalResponse[1]; + $oResult->PermanentFlags = \array_map('\\MailSo\\Base\\Utils::Utf7ModifiedToUtf8', $oResponse->OptionalResponse[1]); } } else if ('READ-ONLY' === $key) { // $oResult->IsWritable = false; @@ -348,7 +348,7 @@ trait Folders else if (\count($oResponse->ResponseList) > 2 && 'FLAGS' === $oResponse->ResponseList[1] && \is_array($oResponse->ResponseList[2])) { - $oResult->Flags = $oResponse->ResponseList[2]; + $oResult->Flags = \array_map('\\MailSo\\Base\\Utils::Utf7ModifiedToUtf8', $oResponse->ResponseList[2]); } } } diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Commands/Messages.php b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Commands/Messages.php index 78109fe8d..56f4028c4 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Commands/Messages.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Commands/Messages.php @@ -279,6 +279,8 @@ trait Messages * $sStoreAction[] = (UNCHANGEDSINCE $modsequence) */ + $aInputStoreItems = \array_map('\\MailSo\\Base\\Utils::Utf8ToUtf7Modified', $aInputStoreItems); + return $this->SendRequestGetResponse( $oRange->UID ? 'UID STORE' : 'STORE', array((string) $oRange, $sStoreAction, $aInputStoreItems) diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php b/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php index ea778475c..784d04937 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php @@ -535,7 +535,7 @@ class MailClient foreach ($aFetchResponse as $oFetchResponse) { $iUid = (int) $oFetchResponse->GetFetchValue(FetchType::UID); - $aLowerFlags = \array_map('strtolower', $oFetchResponse->GetFetchValue(FetchType::FLAGS)); + $aLowerFlags = \array_map('mb_strtolower', \array_map('\\MailSo\\Base\\Utils::Utf7ModifiedToUtf8', $oFetchResponse->GetFetchValue(FetchType::FLAGS))); $aFlags[] = array( 'Uid' => $iUid, 'Flags' => $aLowerFlags diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Mail/Message.php b/snappymail/v/0.0.0/app/libraries/MailSo/Mail/Message.php index ce52e241e..90e118053 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Mail/Message.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Mail/Message.php @@ -293,7 +293,7 @@ class Message implements \JsonSerializable $oMessage->sFolder = $sFolder; $oMessage->iUid = (int) $oFetchResponse->GetFetchValue(FetchType::UID); $oMessage->iSize = (int) $oFetchResponse->GetFetchValue(FetchType::RFC822_SIZE); - $oMessage->aFlagsLowerCase = \array_map('strtolower', $aFlags ?: []); + $oMessage->aFlagsLowerCase = \array_map('mb_strtolower', \array_map('\\MailSo\\Base\\Utils::Utf7ModifiedToUtf8', $aFlags ?: [])); $oMessage->iInternalTimeStampInUTC = \MailSo\Base\DateTimeHelper::ParseInternalDateString($sInternalDate);