cleanup mime header encoding handling

This commit is contained in:
the-djmaze 2024-01-22 09:19:45 +01:00
parent 4d9fb41d73
commit 8749d189df
6 changed files with 8 additions and 11 deletions

View file

@ -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';
}

View file

@ -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)) {

View file

@ -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);
}

View file

@ -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.'"' : '';

View file

@ -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 . '"';

View file

@ -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);