From 8749d189df9d7b4372e50eb07560a96147b579d0 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 22 Jan 2024 09:19:45 +0100 Subject: [PATCH] cleanup mime header encoding handling --- .../app/libraries/MailSo/Base/Enumerations/Encoding.php | 1 - snappymail/v/0.0.0/app/libraries/MailSo/Base/Utils.php | 5 ++++- snappymail/v/0.0.0/app/libraries/MailSo/Mime/Attachment.php | 2 +- snappymail/v/0.0.0/app/libraries/MailSo/Mime/Email.php | 4 +--- snappymail/v/0.0.0/app/libraries/MailSo/Mime/Parameter.php | 4 +--- .../v/0.0.0/app/libraries/RainLoop/Actions/Messages.php | 3 +-- 6 files changed, 8 insertions(+), 11 deletions(-) diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Base/Enumerations/Encoding.php b/snappymail/v/0.0.0/app/libraries/MailSo/Base/Enumerations/Encoding.php index ad9dc20b8..017744eab 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Base/Enumerations/Encoding.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Base/Enumerations/Encoding.php @@ -21,7 +21,6 @@ abstract class Encoding const QUOTED_PRINTABLE_LOWER = 'quoted-printable'; const QUOTED_PRINTABLE_SHORT = 'Q'; - const BASE64 = 'Base64'; const BASE64_LOWER = 'base64'; const BASE64_SHORT = 'B'; } diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Base/Utils.php b/snappymail/v/0.0.0/app/libraries/MailSo/Base/Utils.php index be1da5ff9..3d8793147 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Base/Utils.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Base/Utils.php @@ -356,7 +356,10 @@ abstract class Utils return $sResultHeaders; } - public static function EncodeUnencodedValue(string $sEncodeType, string $sValue) : string + /** + * https://datatracker.ietf.org/doc/html/rfc2047 + */ + public static function EncodeHeaderValue(string $sValue, string $sEncodeType = 'B') : string { $sValue = \trim($sValue); if (\strlen($sValue) && !static::IsAscii($sValue)) { diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Attachment.php b/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Attachment.php index 904764c80..1fb069096 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Attachment.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Attachment.php @@ -153,7 +153,7 @@ class Attachment $oAttachmentPart->Body = \MailSo\Base\StreamWrappers\Binary::CreateStream($oAttachmentPart->Body, \MailSo\Base\StreamWrappers\Binary::GetInlineDecodeOrEncodeFunctionName( - \MailSo\Base\Enumerations\Encoding::BASE64, false)); + \MailSo\Base\Enumerations\Encoding::BASE64_LOWER, false)); \MailSo\Base\StreamWrappers\Binary::RememberStream($oAttachmentPart->Body); } diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Email.php b/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Email.php index 46decf217..88559eff7 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Email.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Email.php @@ -184,9 +184,7 @@ class Email implements \JsonSerializable $sDisplayName = \str_replace('"', '\"', $this->sDisplayName); if ($bConvertSpecialsName) { - $sDisplayName = \strlen($sDisplayName) - ? \MailSo\Base\Utils::EncodeUnencodedValue(\MailSo\Base\Enumerations\Encoding::BASE64_SHORT, $sDisplayName) - : ''; + $sDisplayName = \strlen($sDisplayName) ? \MailSo\Base\Utils::EncodeHeaderValue($sDisplayName) : ''; } $sDisplayName = \strlen($sDisplayName) ? '"'.$sDisplayName.'"' : ''; diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Parameter.php b/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Parameter.php index 7a1bddc2f..e73ce1df5 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Parameter.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Parameter.php @@ -66,9 +66,7 @@ class Parameter implements \JsonSerializable \strtolower(Enumerations\Parameter::FILENAME) ))) { - return $this->sName . '="' . \MailSo\Base\Utils::EncodeUnencodedValue( - \MailSo\Base\Enumerations\Encoding::BASE64_SHORT, - $this->sValue) . '"'; + return $this->sName . '="' . \MailSo\Base\Utils::EncodeHeaderValue($this->sValue) . '"'; } return $this->sName . '="' . $this->sValue . '"'; diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Messages.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Messages.php index d34e9d0d8..3053c24b7 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Messages.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Messages.php @@ -779,8 +779,7 @@ trait Messages if (!empty($sRawBody)) { $sMailTo = \trim($aToCollection->ToString(true)); $sMailSubject = \trim($oMessage->GetSubject()); - $sMailSubject = 0 === \strlen($sMailSubject) ? '' : \MailSo\Base\Utils::EncodeUnencodedValue( - \MailSo\Base\Enumerations\Encoding::BASE64_SHORT, $sMailSubject); + $sMailSubject = \strlen($sMailSubject) ? \MailSo\Base\Utils::EncodeHeaderValue($sMailSubject) : ''; $sMailHeaders = $sMailBody = ''; list($sMailHeaders, $sMailBody) = \explode("\r\n\r\n", $sRawBody, 2);