【发布时间】:2010-07-16 15:07:53
【问题描述】:
我设置了一个脚本来处理收到的电子邮件并在 Blogger 上创建博客条目。我正在使用 PEAR 的 Mail_Mime 库(现在)来阅读传入的消息。邮件中通常包含浏览器无法读取的字符——这种情况最常发生在人们使用 Outlook 或从 MS Word 剪切/粘贴时。
所以另一端的输出是这样的:
这是一个带有“引号”和“撇号”的测试帖子——值得一提的是,它还有破折号——以及从 MS Word 中剪切和粘贴的其他奇怪格式。
你也可以在野外see the output。
修复任何特定实例并不难,但每个客户端(hotmail、gmail、outlook 等)的处理方式似乎略有不同。 Mail_Mime 似乎只处理输出,如果我关闭 Mail_Mime 的解析并尝试自己使用 mb_convert_encoding 或对此进行一些手动模拟来翻译编码字符,那就更糟了。
请注意,选择正确的编码类型并使用解码/编码/转换功能无法解决此问题。传入的格式从 Windows-1252 到 UTF8 到邮件客户端可以想到的任何其他格式。
在此之前有没有人编写过这个脚本,可以通过提供最佳方法的示例或建议来节省我一些时间?我已经尝试了所有简单的答案并进行了大量实验,因此请不要打扰回复,除非您已成功处理过类似问题或对编码问题有深入了解。
【问题讨论】:
-
电子邮件信息必须按照标题中的规定进行解释(请参阅 Content-Type 字段中的 charset 参数)。如果缺少,RFC 5322 暗示 US-ASCII。
-
这是由 Mail_Mime 自动完成的。这个问题比简单地理解协议要复杂得多。
-
这篇文章有一些有趣的想法:stackoverflow.com/questions/2686515/… 不过,我不知道它如何适用于我的问题。
标签: php email character-encoding