Bump ImapEngine from 1.25.1 to 1.25.2

This commit is contained in:
johnnyq
2026-07-18 11:17:53 -04:00
parent 9cc7e5ff3c
commit 1a3d7a1e0d
32 changed files with 2375 additions and 269 deletions

View File

@@ -0,0 +1,59 @@
<?php
namespace DirectoryTree\ImapEngine\Support;
use ZBateson\MailMimeParser\Header\ParameterHeader;
class MimeParameterParser
{
/**
* Parse and normalize MIME parameters.
*
* @param array<string, string> $parameters
* @return array<string, string>
*/
public static function parse(array $parameters): array
{
if (empty($parameters)) {
return [];
}
$header = new ParameterHeader(
'Content-Type',
'application/octet-stream; '.implode('; ', static::stringify($parameters))
);
$parsed = [];
foreach (array_keys($parameters) as $name) {
$name = strtolower(explode('*', $name, 2)[0]);
if (array_key_exists($name, $parsed)) {
continue;
}
if (! is_null($value = $header->getValueFor($name))) {
$parsed[$name] = $value;
}
}
return $parsed;
}
/**
* Convert parameter values into MIME parameter syntax.
*
* @param array<string, string> $parameters
* @return string[]
*/
protected static function stringify(array $parameters): array
{
$values = [];
foreach ($parameters as $name => $value) {
$values[] = sprintf('%s="%s"', $name, Str::escape($value));
}
return $values;
}
}

View File

@@ -300,6 +300,10 @@ class Str
*/
public static function decodeMimeHeader(string $value): string
{
if (empty($value)) {
return $value;
}
if (! str_contains($value, '=?')) {
return $value;
}