From 58d02fa2e743fb0e9b02977fbc5cbdaa6316cba6 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Fri, 28 Jan 2022 16:43:50 +0100 Subject: [PATCH] Resolve #190 --- .../libraries/MailSo/Imap/BodyStructure.php | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/BodyStructure.php b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/BodyStructure.php index 13c5d5aad..080cfffe4 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/BodyStructure.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/BodyStructure.php @@ -218,27 +218,30 @@ class BodyStructure public function GetHtmlAndPlainParts() : array { - $aParts = $this->SearchByCallback(function ($oItem) { + $aParts = []; + + $gParts = $this->SearchByCallback(function ($oItem) { return ('text/html' === $oItem->sContentType || 'text/plain' === $oItem->sContentType) && !$oItem->IsAttachBodyPart(); }); - - if ($aParts->valid()) { - return \array_merge([$aParts->current()], \iterator_to_array($aParts)); + foreach ($gParts as $oPart) { + $aParts[] = $oPart; } /** * No text found, is it encrypted? * If so, just return that. */ - $gEncryptedParts = $this->SearchByContentType('multipart/encrypted'); - foreach ($gEncryptedParts as $oPart) { - if ($oPart->IsPgpEncrypted() && $oPart->SubParts()[1]->IsInline()) { - return array($oPart->SubParts()[1]); + if (!$aParts) { + $gEncryptedParts = $this->SearchByContentType('multipart/encrypted'); + foreach ($gEncryptedParts as $oPart) { + if ($oPart->IsPgpEncrypted() && $oPart->SubParts()[1]->IsInline()) { + return array($oPart->SubParts()[1]); + } } } - return []; + return $aParts; } public function SearchCharset() : string