0
heserby
22.10.14
✎
16:13
|
Добрый день, форумчане!
Есть папка с письмами *.msg. Требуется распечатывать их из 1с.
Получаю письма таким образом:
Функция ПолучитьПисьмоНаСервере(ДанныеФайла, КодировкаПисьма)
Перем Имя,Путь;
Байт = 255;
ПолныйПуть = "C:\Temp\" + ДанныеФайла.ПутьКФайлу;
обСообщение = Неопределено;
обСообщение = Новый COMОбъект("CDO.Message");
обПоток = Новый COMОбъект("ADODB.Stream");
обПоток.CharSet = КодировкаПисьма;
обПоток.Type = 2;
обПоток.Mode = 3;
обПоток.Open();
обПоток.LoadFromFile(ПолныйПуть);
обПоток.Flush();
Если НЕ КодировкаПисьма = "windows-1251" Тогда
СтримВыход = Новый COMОбъект("ADODB.Stream");
СтримВыход.Type = 2;
СтримВыход.Mode = 3;
СтримВыход.charset = "windows-1251";
СтримВыход.LineSeparator = -1;
СтримВыход.Open();
Всего = обПоток.size;
Пока обПоток.EOS = 0 Цикл
СтримВыход.WriteText(обПоток.ReadText(Байт),?(Байт=-2,1,0));
КонецЦикла;
СтримВыход.Flush();
обСообщение.Datasource.OpenObject(СтримВыход, "_Stream");
СтримВыход.Close();
Иначе
обСообщение.Datasource.OpenObject(обПоток, "_Stream");
КонецЕсли;
обСообщение.DataSource.Save();
обПоток.Close();
ХТМЛТекстПисьма = обСообщение.BodyPart.Fields(7).OriginalValue;
Возврат ХТМЛТекстПисьма;
КонецФункции
Большинство писем в кодировке koi-8, и мой stream меняет кодировку на win-1251. Но попадаются иногда письма в кодировке utf-8 и собственно, сразу в win-1251, и приходят кракозябры.
Вопрос: Как мне получить кодировку письма? Помощи, пожалуйста.
|
|
7
heserby
23.10.14
✎
13:15
|
(5) (6) Спасибо.
Возможно я неправильно сформулировал вопрос.
Я могу перекодировать письмо из одной кодировки в другую, да.
Но я не пойму в какой кодировке у меня письмо изначально.
В ComОбъект Stream надо сразу задавать Charset. А какой выбрать я не знаю. Письма есть в 3 кодировках.
Как мне получить кодировку из письма?
|
|