diff --git a/include/class.file.php b/include/class.file.php index c0dbc30563827462079e92755358bdd40e77c9d3..a2ce70bfa1a56b33641eda172b40651619e067fb 100644 --- a/include/class.file.php +++ b/include/class.file.php @@ -394,8 +394,9 @@ class AttachmentFile { $file['size'] = $size; // Prefer mb_strlen, because mbstring.func_overload will // automatically prefer it if configured. - elseif (function_exists('mb_strlen')) + elseif (extension_loaded('mbstring')) $file['size'] = mb_strlen($file['data'], '8bit'); + // bootstrap.php include a compat version of mb_strlen else $file['size'] = strlen($file['data']); diff --git a/include/class.mailfetch.php b/include/class.mailfetch.php index 644d866637383fb9faadfce643616a280e8e2d52..0b739e7c82eeb4a9a1668a096effcbc8ade8616e 100644 --- a/include/class.mailfetch.php +++ b/include/class.mailfetch.php @@ -462,6 +462,7 @@ class MailFetcher { array( 'name' => $this->mime_decode($filename), 'type' => $this->getMimeType($part), + 'size' => $part->bytes ?: null, 'encoding' => $part->encoding, 'index' => ($index?$index:1), 'cid' => $content_id, diff --git a/include/class.mailparse.php b/include/class.mailparse.php index f3feaf25d5e2678a4be426ab36e898dcd48782a2..378c68c1959e2a5c6ff4d442a9b8282c43c7aee3 100644 --- a/include/class.mailparse.php +++ b/include/class.mailparse.php @@ -396,6 +396,13 @@ class Mail_Parse { else $file['data'] = $part->body; + // Capture filesize in order to support de-duplication + if (extension_loaded('mbstring')) + $file['size'] = mb_strlen($file['data'], '8bit'); + // bootstrap.php include a compat version of mb_strlen + else + $file['size'] = strlen($file['data']); + if(!$this->decode_bodies && $part->headers['content-transfer-encoding']) $file['encoding'] = $part->headers['content-transfer-encoding'];