【问题标题】:Plain text without encoding to UTF-8未编码为 UTF-8 的纯文本
【发布时间】:2015-03-17 14:12:58
【问题描述】:

我的脚本有问题。它从标准输入读取邮件并做任何需要的事情。对于 Thunderbird 或 Outlook.com 等邮件客户端,我的脚本非常有效。主要问题是它不适用于苹果的“邮件”程序(这在我的企业中非常有用)。

由于某种原因,从邮件中读取的文本没有被编纂。例如:

Respuesta 5 desde Mail
El 17/03/2015, a = las 13:13, app@******.es = escribi=F3:

--=3D=3D--
RESPONDER POR ENCIMA DE ESTA L=CDNEA

Comunicaci=F3n

C=F3digo:   PRB03154
Nombre del grupo:   MYSTICA

Prueba de = comunicaciones a trav=E9s de mails

Comunicaci=F3n enviada por **** (Departamento de = ****)

如您所见,有一些 =F3 与 char ó 等价,并且我认为有多个单个 '=' 来自 =\n

我试过这样的代码:

echo utf8_encode($texto);

mb_internal_encoding('UTF-8');
echo str_replace("_"," ", mb_decode_mimeheader($texto));

echo iconv(mb_detect_encoding($texto, mb_detect_order(), true), "UTF-8", $texto);

有没有办法将此文本转换为更易读的内容?

谢谢

【问题讨论】:

  • 您到底是如何发送邮件的?问题可能是您没有设置必要的邮件标头来正确描述邮件内容的编码方式。如果您没有明确指定,不同的邮件客户端会做出不同的默认假设; Mail.app 显然做出了与 Outlook 不同的假设。
  • 嗯,像文本一样的邮件是用Mail.app发送的。
  • 啊,反过来。 没有正确解析邮件标头。编码电子邮件的方法有很多,您需要全部支持。您需要解析标头以了解邮件的编码方式,并使用正确的工具对其进行解码。 PHP 主要在 imap 扩展名下提供这些工具。

标签: php email character-encoding


【解决方案1】:

好的,问题解决了。我不得不使用quoted_printable_decode function

我在SO: PHP giving a trailing “=” on each line after reading from stdin找到了解决方案

【讨论】:

    猜你喜欢
    • 2019-01-10
    • 1970-01-01
    • 1970-01-01
    • 2013-10-20
    • 2014-10-18
    • 2012-09-27
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多