From 204aa76657665abd3746e7de034a3723525363c3 Mon Sep 17 00:00:00 2001 From: Alexander Kozlov Date: Wed, 24 Jan 2024 11:09:35 +0300 Subject: [PATCH] fixed attachment detection for rare case with multiline utf8 headers --- src/Fetch/Attachment.php | 10 ++++++++++ src/Fetch/Message.php | 11 +++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/Fetch/Attachment.php b/src/Fetch/Attachment.php index bd01e7d..51c20fa 100644 --- a/src/Fetch/Attachment.php +++ b/src/Fetch/Attachment.php @@ -116,6 +116,16 @@ class Attachment $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'])) { $this->setFileName($parameters['filename']); } elseif (!empty($parameters['name'])) { diff --git a/src/Fetch/Message.php b/src/Fetch/Message.php index 0af6221..1836755 100644 --- a/src/Fetch/Message.php +++ b/src/Fetch/Message.php @@ -534,6 +534,17 @@ class Message { $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'])) { $attachment = new Attachment($this, $structure, $partIdentifier); $this->attachments[] = $attachment;