diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/SequenceSet.php b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/SequenceSet.php index 0d9847441..538cb6fc2 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/SequenceSet.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/SequenceSet.php @@ -55,6 +55,11 @@ class SequenceSet /*extends \SplFixedArray*/ implements \Countable return \array_search($value, $this->data); } + public function getArrayCopy(): array + { + return $this->data; + } + public function __toString(): string { $aResult = array(); 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 abba14ac6..bd37ffd18 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 @@ -781,16 +781,15 @@ class MailClient if (\count($aFetchResponse)) { - $aCollection = []; + $aCollection = \array_fill_keys($oRange->getArrayCopy(), null); $sFetchType = $oRange->UID ? \MailSo\Imap\Enumerations\FetchType::UID : \MailSo\Imap\Enumerations\FetchType::INDEX; foreach ($aFetchResponse as /* @var $oFetchResponseItem \MailSo\Imap\FetchResponse */ $oFetchResponseItem) { - $i = $oRange->indexOf($oFetchResponseItem->GetFetchValue($sFetchType)); - if (false !== $i) { - $aCollection[$i] = Message::NewFetchResponseInstance($oMessageCollection->FolderName, $oFetchResponseItem); + $id = $oFetchResponseItem->GetFetchValue($sFetchType); + if (\array_key_exists($id, $aCollection)) { + $aCollection[$id] = Message::NewFetchResponseInstance($oMessageCollection->FolderName, $oFetchResponseItem); } } - \ksort($aCollection); - $oMessageCollection->exchangeArray(\array_values($aCollection)); + $oMessageCollection->exchangeArray(\array_values(\array_filter($aCollection))); } } }