首页 > 解决方案 > Outlook 2016:一些电子邮件以中文正文到达

问题描述

偶尔我们的一位用户会收到一封来自已知来源的电子邮件,并且电子邮件正文的字符将是中文而不是英文。它们不会都是中文,而是中文和一些随机字符的混合体,像这样:

《格浴㹬਍†格慥㹤਍††䴼呅⁁瑨灴攭留癞∽潃瑮湥⵴祔数•潣瑮湥㵴琢硥⽴瑨汭※档牡敳㵴瑵ⵦ㘱㸢਍†††洼瑥⁡瑨灴攭留癞∽潃瑮湥⵴祔数•潣瑮湥㵴琢硥⽴瑨汭※档牡敳㵴ⵏ㠸㤵ㄭ㸢਍††琼莹莹敬刾捩敫⁹潲慭狝潲效獡䐠汥癞牥摥够畯⁲汆睯牥⁳牏䜠晩㱴琯莹敬ാ㰠栯慥㹤਍†戼挚⁹杢潣潬㵲⌢晦晦㸢਍††琼扡敬眠摩”

它似乎只发生在一两个用户身上,而且不是每个发件人 - 事实上,发件人的一封电子邮件可能很好,下一封可能是这样的。编码似乎很好,但我们不知道还能去哪里看。另一件事 - 我们有梭子鱼作为我们的电子邮件过滤器。如果我们首先查看梭子鱼中的一封问题电子邮件,它是英文的。客户端好像改成中文了。

我们有一个本地 Exchange 2016 服务器,Outlook 2016 作为邮件客户端,操作系统是 Windows 10。谢谢!

标签: emailoutlook

解决方案


我可以告诉你发生了什么,虽然我不能告诉你为什么。

我将您的字符串保存到文本文件中。我创建了一个小的 Excel 宏来读取该文件并以十六进制显示字符:

683C 6D74 3E6C 0A0D 2020 683C 6165 3E64 0A0D 2020 2020 4D3C 5445 2041 7468 7074 652D 7571
7669 223D 6F43 746E 6E65 2D74 7954 6570 2022 6F63 746E 6E65 3D74 7422 7865 2F74 7468 6C6D
203B 6863 7261 6573 3D74 7475 2D66 3631 3E22 0A0D 2020 2020 6D3C 7465 2061 7468 7074 652D
7571 7669 223D 6F43 746E 6E65 2D74 7954 6570 2022 6F63 746E 6E65 3D74 7422 7865 2F74 7468
6C6D 203B 6863 7261 6573 3D74 5349 2D4F 3838 3935 312D 3E22 0A0D 2020 2020 743C 7469 656C
523E 6369 656B 2079 6548 6F72 616D 736E 4820 7361 4420 6C65 7669 7265 6465 5920 756F 2072
6C46 776F 7265 2073 724F 4720 6669 3C74 742F 7469 656C 0D3E 200A 3C20 682F 6165 3E64 0A0D
2020 623C 646F 2079 6762 6F63 6F6C 3D72 2322 6666 6666 6666 3E22 0A0D 2020 2020 743C 6261
656C 7720 6469

每对十六进制数字代表一个有效的 ASCII 字符。第四个字符是“0A0D”或“换行回车”。这应该是“回车换行”。不知何故,有效的 ASCII 电子邮件正文已被解释为 little-endian UTF-16 电子邮件正文。如果将这些字符拆分并反转​​它们,您会得到:

<html>
  <head>
    <META http-equiv="Content-Type" content="text/html; charset=utf-16">
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Rickey Heromans Has Delivered Your Flowers Or Gift</title>
  </head>
  <body bgcolor="#ffffff">
    <table wid

我对 Html 的了解并没有扩展到了解定义两个字符集的重要性,尽管看起来第一个字符集已被遵守。所有其他标签(html、head、meta、title、body 和 table)都是小写的,所以我的猜测是在<META http-equiv="Content-Type" content="text/html; charset=utf-16">某处添加了不正确的标签。

希望这可以帮助。


推荐阅读