From 0b767bb3737f76681cfefe93eba95ee327028452 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Thu, 13 Jan 2022 16:37:55 +0100 Subject: [PATCH] Some IMAP RFC updates --- .../MailSo/Imap/Commands/Messages.php | 21 +++++++++++++------ .../MailSo/Imap/Requests/ESEARCH.php | 8 +++++++ .../app/libraries/MailSo/Mail/MailClient.php | 1 + 3 files changed, 24 insertions(+), 6 deletions(-) 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 99f2f3789..e35a1f21c 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 @@ -118,16 +118,25 @@ trait Messages * @throws \MailSo\Net\Exceptions\Exception * @throws \MailSo\Imap\Exceptions\Exception */ - public function MessageAppendStream(string $sFolderName, $rMessageAppendStream, int $iStreamSize, array $aAppendFlags = null, int &$iUid = null, int $iDateTime = 0) : ?int + public function MessageAppendStream(string $sFolderName, $rMessageAppendStream, int $iStreamSize, array $aFlagsList = null, int &$iUid = null, int $iDateTime = 0) : ?int { - $aData = array($this->EscapeFolderName($sFolderName), $aAppendFlags); + $aParams = array( + $this->EscapeFolderName($sFolderName), + $aFlagsList + ); if (0 < $iDateTime) { - $aData[] = $this->EscapeString(\gmdate('d-M-Y H:i:s', $iDateTime).' +0000'); + $aParams[] = $this->EscapeString(\gmdate('d-M-Y H:i:s', $iDateTime).' +0000'); } - $aData[] = '{'.$iStreamSize.'}'; +/* + // RFC 3516 || RFC 6855 section-4 + if ($this->IsSupported('BINARY') || $this->IsSupported('UTF8=ACCEPT')) { + $aParams[] = '~{'.$iStreamSize.'}'; + } +*/ + $aParams[] = '{'.$iStreamSize.'}'; - $this->SendRequestGetResponse('APPEND', $aData); + $this->SendRequestGetResponse('APPEND', $aParams); $this->writeLog('Write to connection stream', LogType::NOTE); @@ -154,7 +163,7 @@ trait Messages /** * RFC 3502 MULTIAPPEND - public function MessageAppendStreams(string $sFolderName, $rMessageAppendStream, int $iStreamSize, array $aAppendFlags = null, int &$iUid = null, int $iDateTime = 0) : ?int + public function MessageAppendStreams(string $sFolderName, $rMessageAppendStream, int $iStreamSize, array $aFlagsList = null, int &$iUid = null, int $iDateTime = 0) : ?int */ /** diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Requests/ESEARCH.php b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Requests/ESEARCH.php index de91952db..a611aeba8 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Requests/ESEARCH.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Requests/ESEARCH.php @@ -68,6 +68,14 @@ class ESEARCH extends Request $sCmd = 'SEARCH'; $aRequest = array(); +/* // RFC 6203 + if (false !== \stripos($this->sCriterias, 'FUZZY') && !$this->oImapClient->IsSupported('SEARCH=FUZZY')) { + $this->oImapClient->writeLogException( + new RuntimeException('SEARCH=FUZZY is not supported'), + Type::ERROR, true); + } +*/ + $aFolders = []; if ($this->aMailboxes) { $aFolders[] = 'mailboxes'; 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 ebe9e11eb..cf39ea9ae 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 @@ -261,6 +261,7 @@ class MailClient ); // RFC 3516 + // Should mailserver decode or PHP? if ($sMailEncoding && $this->oImapClient->IsSupported('BINARY')) { $sMailEncoding = ''; $sPeek = FetchType::BINARY_PEEK;