From e770b503e5a03002f04e95b5c475a8add24b55f5 Mon Sep 17 00:00:00 2001 From: gti-eu <60189441+gti-eu@users.noreply.github.com> Date: Tue, 28 Jan 2020 13:23:26 +0100 Subject: [PATCH 1/4] Fix mailcollector text format --- .../class/emailcollector.class.php | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index 0844cff2057..5b7d394dce0 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -2013,6 +2013,9 @@ class EmailCollector extends CommonObject // TEXT if ($p->type == 0 && $data) { + if(!empty($params['charset'])) { + $data = $this->convertStringEncoding($data, $params['charset']); + } // Messages may be split in different parts because of inline attachments, // so append parts together with blank row. if (strtolower($p->subtype) == 'plain') @@ -2028,6 +2031,9 @@ class EmailCollector extends CommonObject // There are no PHP functions to parse embedded messages, // so this just appends the raw source to the main message. elseif ($p->type == 2 && $data) { + if(!empty($params['charset'])) { + $data = $this->convertStringEncoding($data, $params['charset']); + } $plainmsg .= $data."\n\n"; } @@ -2039,4 +2045,18 @@ class EmailCollector extends CommonObject } } } + + protected function convertStringEncoding($string, $fromEncoding, $toEncoding='UTF-8') { + if(!$string || $fromEncoding == $toEncoding) { + return $string; + } + $convertedString = function_exists('iconv') ? @iconv($fromEncoding, $toEncoding . '//IGNORE', $string) : null; + if(!$convertedString && extension_loaded('mbstring')) { + $convertedString = @mb_convert_encoding($string, $toEncoding, $fromEncoding); + } + if(!$convertedString) { + throw new Exception('Mime string encoding conversion failed'); + } + return $convertedString; + } } From 8a9ca97b45fa25d0a6ebb36423f41f0ea491a8d5 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Tue, 28 Jan 2020 12:26:59 +0000 Subject: [PATCH 2/4] Fixing style errors. --- htdocs/emailcollector/class/emailcollector.class.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index 5b7d394dce0..69e3c83fc66 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -2045,8 +2045,9 @@ class EmailCollector extends CommonObject } } } - - protected function convertStringEncoding($string, $fromEncoding, $toEncoding='UTF-8') { + + protected function convertStringEncoding($string, $fromEncoding, $toEncoding = 'UTF-8') + { if(!$string || $fromEncoding == $toEncoding) { return $string; } From c169632f7b267b03905e715bd9f269ddfcd04f6f Mon Sep 17 00:00:00 2001 From: gti-eu <60189441+gti-eu@users.noreply.github.com> Date: Tue, 28 Jan 2020 14:24:42 +0100 Subject: [PATCH 3/4] Add missing doc --- htdocs/emailcollector/class/emailcollector.class.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index 69e3c83fc66..514612c4b2b 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -2046,6 +2046,14 @@ class EmailCollector extends CommonObject } } + /** + * Converts a string from one encoding to another. + * @param string $string + * @param string $fromEncoding + * @param string $toEncoding + * @return string Converted string if conversion was successful, or the original string if not + * @throws Exception + */ protected function convertStringEncoding($string, $fromEncoding, $toEncoding = 'UTF-8') { if(!$string || $fromEncoding == $toEncoding) { From b2256620c40d4310c93ed3aec876c27fa1b74960 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 28 Jan 2020 20:36:28 +0100 Subject: [PATCH 4/4] Update emailcollector.class.php --- htdocs/emailcollector/class/emailcollector.class.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index 514612c4b2b..e6968109bf7 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -2048,10 +2048,11 @@ class EmailCollector extends CommonObject /** * Converts a string from one encoding to another. - * @param string $string - * @param string $fromEncoding - * @param string $toEncoding - * @return string Converted string if conversion was successful, or the original string if not + * + * @param string $string String to convert + * @param string $fromEncoding String encoding + * @param string $toEncoding String return encoding + * @return string Converted string if conversion was successful, or the original string if not * @throws Exception */ protected function convertStringEncoding($string, $fromEncoding, $toEncoding = 'UTF-8')