mirror of
https://github.com/the-djmaze/snappymail.git
synced 2024-09-20 07:35:55 +08:00
fix NormalizeCharset function
This commit is contained in:
parent
25f9a1e95b
commit
2b626afb8b
|
@ -42,19 +42,21 @@ class Utils
|
|||
|
||||
/**
|
||||
* @param string $sEncoding
|
||||
* @param bool $bAsciAsUtf8 = false
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private static function normalizeCharset($sEncoding)
|
||||
public static function NormalizeCharset($sEncoding, $bAsciAsUtf8 = false)
|
||||
{
|
||||
$sEncoding = \strtolower($sEncoding);
|
||||
switch ($sEncoding)
|
||||
{
|
||||
case 'ansi':
|
||||
case 'ansii':
|
||||
case 'us-ansi':
|
||||
case 'us-ansii':
|
||||
$sEncoding = \MailSo\Base\Enumerations\Charset::ISO_8859_1;
|
||||
case 'asci':
|
||||
case 'ascii':
|
||||
case 'us-asci':
|
||||
case 'us-ascii':
|
||||
$sEncoding = $bAsciAsUtf8 ? \MailSo\Base\Enumerations\Charset::UTF_8 :
|
||||
\MailSo\Base\Enumerations\Charset::ISO_8859_1;
|
||||
break;
|
||||
case 'unicode-1-1-utf-7':
|
||||
$sEncoding = \MailSo\Base\Enumerations\Charset::UTF_7;
|
||||
|
@ -117,7 +119,7 @@ class Utils
|
|||
*/
|
||||
public static function ValidateCharsetName($sCharset)
|
||||
{
|
||||
$sCharset = \strtolower(\MailSo\Base\Utils::normalizeCharset($sCharset));
|
||||
$sCharset = \strtolower(\MailSo\Base\Utils::NormalizeCharset($sCharset));
|
||||
return 0 < \strlen($sCharset) && (\in_array($sCharset, array(\MailSo\Base\Enumerations\Charset::UTF_7_IMAP)) ||
|
||||
\in_array($sCharset, \MailSo\Base\Utils::$SuppostedCharsets));
|
||||
}
|
||||
|
@ -133,8 +135,8 @@ class Utils
|
|||
{
|
||||
$sResult = $sInputString;
|
||||
|
||||
$sFromEncoding = \MailSo\Base\Utils::normalizeCharset($sInputFromEncoding);
|
||||
$sToEncoding = \MailSo\Base\Utils::normalizeCharset($sInputToEncoding);
|
||||
$sFromEncoding = \MailSo\Base\Utils::NormalizeCharset($sInputFromEncoding);
|
||||
$sToEncoding = \MailSo\Base\Utils::NormalizeCharset($sInputToEncoding);
|
||||
|
||||
if ('' === \trim($sResult) || ($sFromEncoding === $sToEncoding && \MailSo\Base\Enumerations\Charset::UTF_8 !== $sFromEncoding))
|
||||
{
|
||||
|
|
|
@ -522,6 +522,7 @@ class Message
|
|||
\MailSo\Base\DateTimeHelper::ParseInternalDateString($sInternalDate);
|
||||
|
||||
$sCharset = $oBodyStructure ? $oBodyStructure->SearchCharset() : '';
|
||||
$sCharset = \MailSo\Base\Utils::NormalizeCharset($sCharset);
|
||||
|
||||
$sHeaders = $oFetchResponse->GetHeaderFieldsValue();
|
||||
if (0 < \strlen($sHeaders))
|
||||
|
@ -536,6 +537,7 @@ class Message
|
|||
if (0 < \strlen($sContentTypeCharset))
|
||||
{
|
||||
$sCharset = $sContentTypeCharset;
|
||||
$sCharset = \MailSo\Base\Utils::NormalizeCharset($sCharset);
|
||||
}
|
||||
|
||||
if (0 < \strlen($sCharset))
|
||||
|
@ -658,6 +660,7 @@ class Message
|
|||
if (0 === \strlen($sCharset) && $oBodyStructure)
|
||||
{
|
||||
$sCharset = $oBodyStructure->SearchCharset();
|
||||
$sCharset = \MailSo\Base\Utils::NormalizeCharset($sCharset);
|
||||
}
|
||||
|
||||
if (0 === \strlen($sCharset))
|
||||
|
@ -680,6 +683,11 @@ class Message
|
|||
|
||||
if (\is_array($aTextParts) && 0 < \count($aTextParts))
|
||||
{
|
||||
if (0 === \strlen($sCharset))
|
||||
{
|
||||
$sCharset = \MailSo\Base\Enumerations\Charset::UTF_8;
|
||||
}
|
||||
|
||||
$sHtmlParts = array();
|
||||
$sPlainParts = array();
|
||||
|
||||
|
@ -694,6 +702,8 @@ class Message
|
|||
$sTextCharset = $sCharset;
|
||||
}
|
||||
|
||||
$sTextCharset = \MailSo\Base\Utils::NormalizeCharset($sTextCharset, true);
|
||||
|
||||
$sText = \MailSo\Base\Utils::DecodeEncodingValue($sText, $oPart->MailEncodingName());
|
||||
$sText = \MailSo\Base\Utils::ConvertEncoding($sText, $sTextCharset, \MailSo\Base\Enumerations\Charset::UTF_8);
|
||||
$sText = \MailSo\Base\Utils::Utf8Clear($sText);
|
||||
|
|
Loading…
Reference in a new issue