mirror of
https://github.com/the-djmaze/snappymail.git
synced 2024-09-20 23:55:55 +08:00
Displaying format=flowed e-mails (#276)
This commit is contained in:
parent
7a9ff78051
commit
f63edfa7cc
|
@ -601,6 +601,16 @@ END;
|
|||
return $sResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $sInputValue
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function DecodeFlowedFormat($sInputValue)
|
||||
{
|
||||
return \preg_replace('/ ([\r]?[\n])/m', ' ', $sInputValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $sEncodedValue
|
||||
* @param string $sIncomingCharset = ''
|
||||
|
|
|
@ -285,6 +285,22 @@ class BodyStructure
|
|||
return $bResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function IsFlowedFormat()
|
||||
{
|
||||
$bResult = !empty($this->aBodyParams['format']) &&
|
||||
'flowed' === \strtolower(\trim($this->aBodyParams['format']));
|
||||
|
||||
if ($bResult && \in_array(\strtolower($this->MailEncodingName()), array('base64', 'quoted-printable')))
|
||||
{
|
||||
$bResult = false;
|
||||
}
|
||||
|
||||
return $bResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array|null
|
||||
*/
|
||||
|
|
|
@ -751,8 +751,8 @@ class Message
|
|||
$sCharset = \MailSo\Base\Enumerations\Charset::UTF_8;
|
||||
}
|
||||
|
||||
$sHtmlParts = array();
|
||||
$sPlainParts = array();
|
||||
$aHtmlParts = array();
|
||||
$aPlainParts = array();
|
||||
|
||||
foreach ($aTextParts as $oPart)
|
||||
{
|
||||
|
@ -782,22 +782,27 @@ class Message
|
|||
|
||||
if ('text/html' === $oPart->ContentType())
|
||||
{
|
||||
$sHtmlParts[] = $sText;
|
||||
$aHtmlParts[] = $sText;
|
||||
}
|
||||
else
|
||||
{
|
||||
$sPlainParts[] = $sText;
|
||||
if ($oPart->IsFlowedFormat())
|
||||
{
|
||||
$sText = \MailSo\Base\Utils::DecodeFlowedFormat($sText);
|
||||
}
|
||||
|
||||
$aPlainParts[] = $sText;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (0 < \count($sHtmlParts))
|
||||
if (0 < \count($aHtmlParts))
|
||||
{
|
||||
$this->sHtml = \implode('<br />', $sHtmlParts);
|
||||
$this->sHtml = \implode('<br />', $aHtmlParts);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->sPlain = \trim(\implode("\n", $sPlainParts));
|
||||
$this->sPlain = \trim(\implode("\n", $aPlainParts));
|
||||
}
|
||||
|
||||
$aMatch = array();
|
||||
|
@ -813,7 +818,7 @@ class Message
|
|||
$this->bPgpEncrypted = true;
|
||||
}
|
||||
|
||||
unset($sHtmlParts, $sPlainParts, $aMatch);
|
||||
unset($aHtmlParts, $aPlainParts, $aMatch);
|
||||
}
|
||||
|
||||
// if (empty($this->sPgpSignature) && 'multipart/signed' === \strtolower($this->sContentType) &&
|
||||
|
|
|
@ -21,6 +21,7 @@ class Parameter
|
|||
const CHARSET = 'charset';
|
||||
const NAME = 'name';
|
||||
const FILENAME = 'filename';
|
||||
const FORMAT = 'format';
|
||||
const BOUNDARY = 'boundary';
|
||||
const PROTOCOL = 'protocol';
|
||||
}
|
||||
|
|
|
@ -210,6 +210,27 @@ class Part
|
|||
\MailSo\Mime\Enumerations\Header::CONTENT_LOCATION)) : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function IsFlowedFormat()
|
||||
{
|
||||
$bResult = false;
|
||||
if ($this->Headers)
|
||||
{
|
||||
$bResult = 'flowed' === \trim(\strtolower($this->Headers->ParameterValue(
|
||||
\MailSo\Mime\Enumerations\Header::CONTENT_TYPE,
|
||||
\MailSo\Mime\Enumerations\Parameter::FORMAT)));
|
||||
|
||||
if ($bResult && \in_array(\strtolower($this->MailEncodingName()), array('base64', 'quoted-printable')))
|
||||
{
|
||||
$bResult = false;
|
||||
}
|
||||
}
|
||||
|
||||
return $bResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue