mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-11-14 20:17:14 +01:00
Ticket system bugfix character encoding is now read from parts and used to convert to UTF-8
This commit is contained in:
parent
00dc3414a2
commit
da0b7d2720
@ -97,6 +97,33 @@ final class MailMessagePartData implements MailMessagePartInterface, JsonSeriali
|
|||||||
return $split[0];
|
return $split[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @inheritDoc
|
||||||
|
*/
|
||||||
|
public function getCharset(): ?string
|
||||||
|
{
|
||||||
|
$header = $this->getHeader('content-type');
|
||||||
|
if ($header === null) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
$pattern = "/([a-zA-Z]*[\/]*[a-zA-Z]*);[a-zA-Z\n\t\r0-9 ]*charset=\"([a-zA-Z-0-9]+)\"/i";
|
||||||
|
$matches = array();
|
||||||
|
if (preg_match(
|
||||||
|
$pattern,
|
||||||
|
$header->getValue(),
|
||||||
|
$matches
|
||||||
|
)) {
|
||||||
|
if (count($matches) >= 3) {
|
||||||
|
return($matches[2]);
|
||||||
|
} else {
|
||||||
|
return(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritDoc
|
* @inheritDoc
|
||||||
*/
|
*/
|
||||||
@ -116,17 +143,29 @@ final class MailMessagePartData implements MailMessagePartInterface, JsonSeriali
|
|||||||
/**
|
/**
|
||||||
* @return string|null
|
* @return string|null
|
||||||
*/
|
*/
|
||||||
public function getDecodedContent(): ?string
|
public function getDecodedContent(string $to_charset = 'UTF-8'): ?string
|
||||||
{
|
{
|
||||||
|
$result = '';
|
||||||
if ($this->content === null) {
|
if ($this->content === null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
$encodingHeader = $this->getHeader('content-transfer-encoding');
|
$encodingHeader = $this->getHeader('content-transfer-encoding');
|
||||||
if ($encodingHeader === null ) {
|
if ($encodingHeader === null ) {
|
||||||
return $this->content;
|
$result = $this->content;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->decode($this->content, $encodingHeader->getValue());
|
$result = $this->decode($this->content, $encodingHeader->getValue());
|
||||||
|
|
||||||
|
$charset = $this->getCharset();
|
||||||
|
|
||||||
|
// throw new InvalidArgumentException('Charset is '.$charset." Text is: ".$result);
|
||||||
|
|
||||||
|
$converted = mb_convert_encoding(
|
||||||
|
$result,
|
||||||
|
$to_charset,
|
||||||
|
$charset
|
||||||
|
);
|
||||||
|
return($converted);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user