Сформировать документ html на основании письма. Формирует документ HTML на основании электронного письма.
// Формирует документ HTML на основании электронного письма.
//
// Параметры:
// ПараметрыФормирования - Структура - параметры формирования документа HTML:
// * Письмо - ДокументСсылка.ЭлектронноеПисьмоВходящее,
// ДокументСсылка.ЭлектронноеПисьмоИсходящее - письмо для которого будет проведена оценка.
// * ТипТекста - ПеречислениеСсылка.ТипыТекстовЭлектронныхПисем - тип текста письма.
// * Текст - Строка - текста письма.
// * ТекстHTML - Строка - текста письма в формате HTML.
// * ТипТекстаПреобразование - ПеречислениеСсылка.ТипыТекстовЭлектронныхПисем - тип текста в который преобразуется
// письмо.
// * Кодировка - Строка - кодировка письма.
// * ОбработатьКартинки - Булево - признак того что картинки будут вложены в HTML.
// ЕстьВнешниеРесурсы - Булево - возвращаемое значение, Истина, если письмо содержит элементы, загружаемые из Интернета.
//
// Возвращаемое значение:
// Строка - обработанный текст электронного письма.
//
Функция СформироватьДокументHTMLНаОснованииПисьма(ПараметрыФормирования, ЕстьВнешниеРесурсы = Неопределено) Экспорт
Письмо = ПараметрыФормирования.Письмо;
ТипТекста = ПараметрыФормирования.ТипТекста;
Текст = ПараметрыФормирования.Текст;
ТекстHTML = ПараметрыФормирования.ТекстHTML;
ТипТекстаПреобразование = ?(ПараметрыФормирования.ТипТекстаПреобразование = Неопределено,
ПараметрыФормирования.ТипТекста, ПараметрыФормирования.ТипТекстаПреобразование);
Кодировка = ПараметрыФормирования.Кодировка;
ОбработатьКартинки = ПараметрыФормирования.ОбработатьКартинки;
ОтключитьВнешниеРесурсы = ПараметрыФормирования.ОтключитьВнешниеРесурсы;
Если ТипТекста <> ТипТекстаПреобразование
И ТипТекста <> Перечисления.ТипыТекстовЭлектронныхПисем.ПростойТекст Тогда
ТекстВходящегоПисьма = ПолучитьОбычныйТекстИзHTML(ТекстHTML);
ДокументHTML = ПолучитьДокументHTMLИзОбычногоТекста(ТекстВходящегоПисьма);
ИначеЕсли ТипТекста = Перечисления.ТипыТекстовЭлектронныхПисем.ПростойТекст
ИЛИ (ТипТекста.Пустая() И СокрЛП(ТекстHTML) = "") Тогда
ДокументHTML = ПолучитьДокументHTMLИзОбычногоТекста(Текст);
Иначе
КодировкаПисьма = Кодировка;
Если ПустаяСтрока(КодировкаПисьма) Тогда
ПозицияАтрибутаКодировки = СтрНайти(ТекстHTML,"charset");
Если ПозицияАтрибутаКодировки <> 0 Тогда
Инд = 0;
Пока КодСимвола(Сред(ТекстHTML,ПозицияАтрибутаКодировки + 8 + Инд,1)) <> 34 Цикл
КодировкаПисьма = КодировкаПисьма + Сред(ТекстHTML,ПозицияАтрибутаКодировки + 8 + Инд,1);
Инд = Инд + 1;
КонецЦикла
Иначе
КодировкаПисьма = "utf8";
КонецЕсли;
КонецЕсли;
Если ТипЗнч(Письмо) = Тип("Структура") Тогда
ТаблицаФайлов = Письмо.Вложения;
Иначе
ТаблицаФайлов = ПолучитьВложенияПисьмаСНеПустымИД(Письмо);
КонецЕсли;
ТекстКОбработке = ТекстHTML;
Если СтрЧислоВхождений(НРег(ТекстКОбработке),"<html") = 0 Тогда
ТекстКОбработке = "<html>" + ТекстКОбработке + "</html>"
КонецЕсли;
НомерПопытки = 1;
ТекстПисьма = СодержимоеТегаHTML(ТекстКОбработке, "html", Истина, НомерПопытки);
Пока СтрНайти(НРег(ТекстПисьма), "<body") = 0
И Не ПустаяСтрока(ТекстПисьма) Цикл
НомерПопытки = НомерПопытки + 1;
ТекстПисьма = СодержимоеТегаHTML(ТекстКОбработке, "html", Истина, НомерПопытки);
КонецЦикла;
Если ТаблицаФайлов.Количество() Тогда
ДокументHTML = ЗаменитьИдентификаторыКартинокНаПутьКФайлам(ТекстПисьма, ТаблицаФайлов, КодировкаПисьма, ОбработатьКартинки);
Иначе
ДокументHTML = ПолучитьОбъектДокументHTMLИзТекстаHTML(ТекстПисьма, КодировкаПисьма);
КонецЕсли;
КонецЕсли;
ЕстьВнешниеРесурсы = РаботаСПочтовымиСообщениями.ЕстьВнешниеРесурсы(ДокументHTML);
РаботаСПочтовымиСообщениями.ОтключитьНебезопасноеСодержимое(ДокументHTML, ЕстьВнешниеРесурсы И ОтключитьВнешниеРесурсы);
Возврат ДокументHTML;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ПараметрыФормированияДокументаHTMLНаОснованииПисьма (БСП)
ПолучитьДанныеПисьмаОснования (БСП)
СформироватьТекстHTMLДляВходящегоПисьма (БСП)
СформироватьТекстHTMLДляИсходящегоПисьма (БСП)
ДеревоПодсистемСформировать (БСП)
СформироватьСообщениеИОтправить (БСП)