Неправильная кодировка писем в Exchange 2010, 2013 и 2016

На днях столкнулся с проблемой, когда определенные письма приходили получателям (да и еще письма в «Отправленных» отправителя) имели неправильную кодировку. Проблема усугублялась тем, что все отправители и получатели были внутри организации и проблема проявлялась случайным образом.


После продолжительных попыток понять, что же происходит, ответ был подсказан Дмитрием Хребиным (его блог — Dmitry Khrebin’s Exchange blog), за что ему большое спасибо.

Ошибка проявляется следующим образом:



  1. Пользователь отправляет письмо

  2. Другой пользователь получает это письмо в нечитаемом виде

  3. Это же письмо оказывается в папке «Отправленные» в нечитаемом виде у отправителя


В картинках это выглядит следующим образом (соответственно для Exchange 2010 и Exchange 2013/2016 есть некоторое отличие в отображении содержимого письма на панели для чтения):





После некоторых поисков на просторах Интернета, удалось наткнуться только на одно упоминание этой проблемы: KB2648682 — An email message body is garbled when you save or send the email message in an Exchange Server 2010 environment. К сожалению, перечисленные в этом KB сценарии в целом совпадают с этой проблемой, но решением является установка Update Rollup 1 for Exchange Server 2010 Service Pack 2. А проблема проявляется аж на Exchange 2010 SP3 UR11.

Тем не менее, я решил проверить, действительно ли эта проблема имеет место быть и в Exchange 2010 SP3. А именно, захотелось проверить вот этот факт из статьи: «This issue occurs because the Exchange server does not update the character set in the PR_BODY_HTML property when the server changes the character set in the PR_INTERNET_CPID property. Therefore, the message body is garbled when Outlook tries to display the body of the message»

Вооружившись MFCMAPI, я посмотрел на указанные в статье свойства PR_BODY_HTML и PR_INTERNET_CPI.





И действительно, значения различаются. Если же теперь поменять значение в свойстве PR_INTERNET_CPID на 20866 (это код для KOI8-R), то письмо сразу становится читабельным (кроме панели для чтения):




В итоге, Дмитрий Хребин подтвердил, что данная проблема все еще актуальна, и, к сожалению, существует в Exchange 2010, 2013, 2016 и указал KB (KB3140296), которую он написал по этой проблеме.


Если свести все воедино, то данная проблема проявляется при следующих условиях:



  1. Outlook работает в онлайн режиме

  2. В Outlook выставлена кодировка для исходящих писем KOI8-R

  3. Тема письма должно содержать «русские» кавычки

  4. Письмо перед отправкой должно быть сохранено в Черновики и затем сразу же отправлено



Workaround


Как выяснилось, исправлять эту проблему не будут ввиду того, что workaround довольно простой (любой один из вариантов):



  • Переключить Outlook в режим кеширования

  • Установить в Outlook кодировку для исходящих писем в UTF-8

  • Не вставлять в тему письма «русские» кавычки


Замечу так же, что с этими кавычками есть и другая проблема, когда Outlook не может найти письма из беседы, тема которой содержит их.



Читайте также:

Добавить комментарий