Как изменить кодировку электронных писем в Ipswitch WhatsUp Gold 

Прежде всего скажу, что речь идет о 12й версии. Оповещения системы мониторинга приходят в кодировке ISO-8859-*. Для России в данной группе предназначера кодировка ISO-8859-5.

Однако, если мы получаем на почту системные события Windows с компьютера, где установлена русская локализация, то мы увидим каракули, а не кириллицу, поскольку русифицированные операционные системы Microsoft традиционно используют кодировку Windows-1251.

К моему великому сожалению, разработчики этой волшебной софтины не предусмотрели настройку кодировки писем. Поиск по интернету не дал мне ни одного достойного решения. Обычный ход действий по данной проблеме предусматривает написание скрипта, который отправляет нужную информацию в требуем виде, и, соответственно, в подходящей кодировке, а вместо использования события e-mail notification вызывается этот скрипт. Минусов у данного решения множество, а исполнение является классическим «костылём».

Благо, выход был найден. Поиски начались с того, что заголовок письма, тот, который и содержит указание на использование кодировки, фиксирован для всех писем, а это значит, что данный кусок текста где-то хранится. Нет, не в реестре. Обычный поиск Far‘ом по директории с программой выдает несколько файлов, в которых содержится поисковая фраза ISO-8859-5. Отбрасывая файлы справки, остается немного файлов и возможных мест, указывающих на данную кодировку.

Заменяем каждое вхождение на свой уникальный код, рестартуем службы, отправляем тестовое письмо … и видим, что кодировка заменена! возвращаем все на место, оставляя только интересующий нас участок файла Core.dll:

 0000081610: 0A 00 00 00 43 6F 6E 74 ¦ 65 6E 74 2D 54 79 70 65 0 Content-Type
0000081620: 3A 20 74 65 78 74 2F 70 ¦ 6C 61 69 6E 3B 63 68 61 : text/plain;cha
0000081630: 72 73 65 74 3D 49 53 4F ¦ 2D 38 38 35 39 2D 36 0D rset=ISO-8859-6d
0000081640: 0A 00 00 00 43 6F 6E 74 ¦ 65 6E 74 2D 54 79 70 65 0 Content-Type
0000081650: 3A 20 74 65 78 74 2F 70 ¦ 6C 61 69 6E 3B 63 68 61 : text/plain;cha
0000081660: 72 73 65 74 3D 49 53 4F ¦ 2D 38 38 35 39 2D 35 0D rset=ISO-8859-5d
0000081670: 0A 00 00 00 43 6F 6E 74 ¦ 65 6E 74 2D 54 79 70 65 0 Content-Type
0000081680: 3A 20 74 65 78 74 2F 70 ¦ 6C 61 69 6E 3B 63 68 61 : text/plain;cha
0000081690: 72 73 65 74 3D 49 53 4F ¦ 2D 38 38 35 39 2D 34 0D rset=ISO-8859-4d

Примечание: символы 0D 0A в фаре отображаются иначе.

Переходим в режим редактирования и заменяем ISO-8859-5 на Windows-1251. Из-за того, что вторая строка длиннее на 2 байта, нам требуется удалить пару пробелов в начале следующей строки. Сохраняем. В итоге должно получиться:
0000081610: 0A 00 00 00 43 6F 6E 74 ¦ 65 6E 74 2D 54 79 70 65  0   Content-Type
0000081620: 3A 20 74 65 78 74 2F 70 ¦ 6C 61 69 6E 3B 63 68 61  : text/plain;cha
0000081630: 72 73 65 74 3D 49 53 4F ¦ 2D 38 38 35 39 2D 36 0D  rset=ISO-8859-6d
0000081640: 0A 00 00 00 43 6F 6E 74 ¦ 65 6E 74 2D 54 79 70 65  0   Content-Type
0000081650: 3A 20 74 65 78 74 2F 70 ¦ 6C 61 69 6E 3B 63 68 61  : text/plain;cha
0000081660: 72 73 65 74 3D 77 69 6E ¦ 64 6F 77 73 2D 31 32 35  rset=windows-125
0000081670: 31 0D 0A 00 43 6F 6E 74 ¦ 65 6E 74 2D 54 79 70 65  1d0 Content-Type
0000081680: 3A 20 74 65 78 74 2F 70 ¦ 6C 61 69 6E 3B 63 68 61  : text/plain;cha
0000081690: 72 73 65 74 3D 49 53 4F ¦ 2D 38 38 35 39 2D 34 0D  rset=ISO-8859-4d
 

Вуаля! Теперь все сообщения будут приходить в корректной кодировке!