0

我使用 Chilkat 组件。我遇到了一个问题。我有一个电子邮件 mime 字符串。有一个html正文。在大多数情况下,它是 Content-Transfer-Encoding:quoted-printable。我需要获取 html 正文并显示它的可读性。我这样做,php代码:

$data = new CkByteData();
$this->ckEmail->GetMbHtmlBody($this->ckEmail->charset(), $data);
$body = $data->getBytes();

似乎在大多数情况下它都有效。但有时它会显示不可读的字符。我检查了$this->ckEmail->charset()返回的“utf-8”,但是当我尝试“iso-8859-1”时,它就可以工作了。我在这里对这些编码感到困惑。我是否需要检测 html 正文(或文本正文)的编码,然后使用 GetMbHtmlBody 正确显示它?如何做好?我想用任何编码正确显示所有字符。

4

1 回答 1

1

如果生成消息的邮件客户端正确执行,则text/htmlContent-Type 标头上的 charset 参数将是正确的,您将能够使用它。

然而,这是一个很大的“如果”,因为邮件在现实世界中是出了名的损坏,并且您经常必须检测text/htmlMIME 部分的 HTML 内容中的字符集并改用它。

于 2019-09-06T01:24:03.293 回答