diff -urN ../roundcubemail-1.5.2.orig/program/lib/Roundcube/rcube_imap.php ./program/lib/Roundcube/rcube_imap.php --- ../roundcubemail-1.5.2.orig/program/lib/Roundcube/rcube_imap.php 2021-12-30 00:29:24.000000000 +0200 +++ ./program/lib/Roundcube/rcube_imap.php 2022-02-17 00:19:25.011073000 +0200 @@ -2306,6 +2306,12 @@ else if (!empty($part->d_parameters['filename'])) { $filename_mime = $part->d_parameters['filename']; } + else if ((!empty($part->d_parameters['filename*'])) and (preg_match('/^([a-zA-Z\d\-]+)\'\'(.+)$/', $part->d_parameters['filename*'], $matches))) { + $filename_mime = sprintf("=?%s?Q?%s?=", $matches[1], preg_replace('/%([\da-fA-F]{2})/', '=$1', $matches[2])); + if (empty($part->charset)) { + $part->charset = $matches[1]; + } + } // read 'name' after rfc2231 parameters as it may contain truncated filename (from Thunderbird) else if (!empty($part->ctype_parameters['name'])) { $filename_mime = $part->ctype_parameters['name']; diff -urN ../roundcubemail-1.5.2.orig/program/lib/Roundcube/rcube_mime_decode.php ./program/lib/Roundcube/rcube_mime_decode.php --- ../roundcubemail-1.5.2.orig/program/lib/Roundcube/rcube_mime_decode.php 2021-12-30 00:29:24.000000000 +0200 +++ ./program/lib/Roundcube/rcube_mime_decode.php 2022-02-17 00:25:35.075603000 +0200 @@ -402,6 +402,9 @@ else if (!empty($part->ctype_parameters['name'])) { $filename = $part->ctype_parameters['name']; } + else if ((!empty($part->d_parameters['filename*'])) and (preg_match('/^([a-zA-Z\d\-]+)\'\'(.+)$/', $part->d_parameters['filename*'], $matches))) { + $filename = sprintf("=?%s?Q?%s?=", $matches[1], preg_replace('/%([\da-fA-F]{2})/', '=$1', $matches[2])); + } if (!empty($filename)) { if (empty($this->params['decode_headers'])) {