Outlook 2016: некоторые письма приходят с телом на китайском - PullRequest
0 голосов
/ 28 апреля 2020

Время от времени один из наших пользователей получит электронное письмо от известного источника, а символы тела письма будут китайскими, а не английскими sh. Все они не будут китайцами, но будут смесью китайских и некоторых случайных символов, например:

"格 浴 㹬 ਍ † 格 慥 㹤 ਍ † † 湥 ⵴ 祔 数 • 潣 瑮 湥 㵴 琢 硥 ⽴ 瑨 汭 ※ 档 牡 敳 㵴 瑵 ⵦ 㘱 㸢 ਍ †† 洼 瑥 ⁡ 瑨 灴 攭 畱 癩 ∽ 潃 瑮 湥 ⵴ 祔 数 • 潣 瑮 湥 㵴 琢 硥 ⽴ 瑨 † ※ 档 牡 㵴 卉 ⵏ 㠸 ㄭ ㄭ † † † † † † † † † † † † † ਍ ਍ ⁳ ⁳ ⁳ 敬 敬

Похоже, что это происходит только с одним или двумя пользователями, и не каждый отправитель На самом деле, одно из писем отправителя может быть в порядке, а следующее может быть таким. Кодирование вроде бы хорошо, но мы не уверены, где еще искать. Еще одна вещь - у нас есть Barracuda в качестве фильтра электронной почты. Если мы сначала рассмотрим одно из проблемных писем в Барракуда, это Engli sh. Похоже, что на клиентской стороне он изменен на китайский.

У нас есть сервер Exchange 2016 на прем с Outlook 2016 в качестве почтового клиента, и ОС - Windows 10. Спасибо!

1 Ответ

0 голосов
/ 29 апреля 2020

Я могу рассказать вам, что произошло, хотя я не могу сказать вам, почему.

Я сохранил вашу строку в текстовом файле. Я создал небольшой макрос 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 было интерпретировано как тело письма 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">.

Надеюсь, это поможет.

...