fixed attachment detection for rare case with multiline utf8 headers

This commit is contained in:
Alexander Kozlov 2024-01-24 11:09:35 +03:00
parent c957e41478
commit 204aa76657
2 changed files with 21 additions and 0 deletions

View File

@ -116,6 +116,16 @@ class Attachment
$parameters = Message::getParametersFromStructure($structure); $parameters = Message::getParametersFromStructure($structure);
// quick fix for Content-Disposition extended notation
// name*0*=UTF-8''%D0%A...
// name*1*=%D0%B8...
// etc
if (!empty($parameters['filename*'])) {
$this->setFileName($parameters['filename*']);
} elseif (!empty($parameters['name*'])) {
$this->setFileName($parameters['name*']);
}
if (!empty($parameters['filename'])) { if (!empty($parameters['filename'])) {
$this->setFileName($parameters['filename']); $this->setFileName($parameters['filename']);
} elseif (!empty($parameters['name'])) { } elseif (!empty($parameters['name'])) {

View File

@ -534,6 +534,17 @@ class Message
{ {
$parameters = self::getParametersFromStructure($structure); $parameters = self::getParametersFromStructure($structure);
// quick fix for Content-Disposition extended notation
// name*0*=UTF-8''%D0%A...
// name*1*=%D0%B8...
// etc
if (empty($parameters['name']) && !empty($parameters['name*'])) {
$parameters['name'] = $parameters['name*'];
}
if (empty($parameters['filename']) && !empty($parameters['filename*'])) {
$parameters['filename'] = $parameters['filename*'];
}
if (!empty($parameters['name']) || !empty($parameters['filename'])) { if (!empty($parameters['name']) || !empty($parameters['filename'])) {
$attachment = new Attachment($this, $structure, $partIdentifier); $attachment = new Attachment($this, $structure, $partIdentifier);
$this->attachments[] = $attachment; $this->attachments[] = $attachment;