При работе с входящей электронной почтой в конфигурациях 1С (например, 1С:ИТИЛ, 1С:Документооборот или пользовательских решениях) разработчики и пользователи часто сталкиваются с проблемой: текстовая часть письма отображается корректно, а вместо встроенных изображений видна лишь рамка с красным крестиком. При этом в обычном веб-браузере или почтовом клиенте то же самое письмо открывается без каких-либо изъянов. Более того, ситуация может воспроизводиться выборочно — на одних рабочих местах картинки видны, а на других отображение отсутствует даже при работе под одной и той же учетной записью 1С.
Рассмотрим подробно причины возникновения этой неисправности и разберем по шагам все способы ее устранения.
Проанализируем архитектуру работы элемента «Поле HTML документа» в платформе 1С:Предприятие. На платформах серии 8.3 (до версии 8.3.14) операционная система Windows использует системный компонент WebBrowser (MSHTML/Internet Explorer) для отрисовки HTML-содержимого внутри тонкого и толстого клиентов.
Выясним основные факторы, которые приводят к блокировке или неверному рендерингу картинок:
cid:). Почтовые клиенты при отправке писем зашивают встроенные изображения как вложения с адресами вида <img src="cid:image001.png@...">. Компонент браузера не умеет самостоятельно извлекать файлы из почтового сообщения. Если 1С не подменяет ссылки во временные файлы или хранилище, браузер выводит рамку ошибки.DisableCachingOfSSLPages) запрещает сохранение медиафайлов во временный кэш, из-за чего рендеринг становится невозможен.<img src="data:image/png;base64,...">) устаревший движок IE8 имеет жесткий лимит на длину строки Data URL (не более 32 Кб) и критичен к строгости указания MIME-типа.Даже если на компьютере установлен Internet Explorer 11, встроенный компонент WebBrowser для сторонних приложений по умолчанию запускается в режиме эмуляции устаревшего IE7 (значение 7000). Чтобы заставить 1С использовать движок IE11, необходимо внести изменения в реестр Windows.
Разберем по шагам порядок настройки реестра:
regedit.exe).HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
1Cv8c.exe (для тонкого клиента) или 1Cv8.exe (для толстого клиента).11000 в десятичной системе счисления (или 2AF8 в шестнадцатеричной). Это принудительно включает режим IE11.Если у нас есть возможность повлиять на формирование или обработку HTML-кода письма на стороне 1С, проанализируем вариант с программной заменой внешних ссылок и cid: на строки Base64.
Посмотрим на пример функции 1С, которая подменяет ссылки на картинки в HTML-тексте на формат Data URL:
// Функция принимает исходный текст HTML и соответствие вложенных картинок
Функция ПодготовитьHTMLСКартинками(ТекстHTML, СоответствиеКартинок) Экспорт
Для Каждого Вложение Из СоответствиеКартинок Цикл
Идентификатор = Вложение.Ключ; // Например, "image001.png@01D78910"
ДвоичныеДанные = Вложение.Значение; // ДвоичныеДанные картинки
СтрокаBase64 = ДвоичныеДанныеВСтрокуBase64(ДвоичныеДанные);
// Формируем готовый Data URL
ПутьDataURL = "data:image/png;base64," + СтрокаBase64;
// Заменяем внутреннюю ссылкуcid: на закодированную строку
ТекстHTML = СтрЗаменить(ТекстHTML, "cid:" + Идентификатор, ПутьDataURL);
КонецЦикла;
Возврат ТекстHTML;
КонецФункции
Использование этого подхода позволяет полностью абстрагироваться от временных файлов на диске и прав доступа к папкам пользователя.
В случаях, когда редактирование реестра недоступно из-за ограничений прав, выполним проверку ключевых параметров браузера и операционной системы:
inetcpl.cpl) и перейдем на вкладку «Дополнительно».AppData\Local\Temp, а путь к профилю Windows не содержит некорректных спецсимволов.Кардинальным и наиболее надежным решением проблемы является обновление платформы 1С:Предприятие до версии 8.3.14 или выше. Начиная с этого релиза, фирма 1С полностью отказалась от использования устаревшего системного компонента Internet Explorer в элементах Поле HTML документа под Windows, переведя их на встроенный движок Chromium/WebKit.
При работе на актуальных версиях платформы 8.3 отображение современно сформированных HTML-писем, стилей и встроенных изображений происходит корректно и одинаково на всех рабочих местах без необходимости настройки реестра Windows и Internet Explorer.