mirror of
https://github.com/BlizD/Tasks.git
synced 2025-03-19 21:07:53 +02:00
@etnety #165 Ошибка обработки вложений во входящих письмах
This commit is contained in:
parent
b4f0aa787b
commit
a3b1aeff3e
@ -1597,19 +1597,39 @@
|
||||
Процедура ЗаписатьВложениеЭлектронногоПисьма(Объект, Вложение,МассивПодписей,КоличествоПустыхИменВоВложениях)
|
||||
|
||||
ПисьмоСсылка = Объект.Ссылка;
|
||||
Размер = 0;
|
||||
// + #165 Александр { [13.05.2019]
|
||||
|
||||
//Размер = 0;
|
||||
//Если ТипЗнч(Вложение.Данные) = Тип("ДвоичныеДанные") Тогда
|
||||
// Размер = Вложение.Данные.Размер();
|
||||
//Иначе
|
||||
// // А может быть и тип ИнтернетПочтовоеСообщение. На данный момент не поддерживаем.
|
||||
// Если ТипЗнч(Вложение.Данные) = Тип("ИнтернетПочтовоеСообщение") Тогда
|
||||
// НовоеУдаленноеВложение = Объект.НепринятыеВложения.Добавить();
|
||||
// НовоеУдаленноеВложение.ИмяВложение = Вложение.Данные.Тема + " " + НСтр("ru = 'от'") + " " +Вложение.Данные.ДатаОтправления;
|
||||
// КонецЕсли;
|
||||
// Возврат;
|
||||
//КонецЕсли;
|
||||
//
|
||||
//Адрес = ПоместитьВоВременноеХранилище(Вложение.Данные, "");
|
||||
|
||||
Если ТипЗнч(Вложение.Данные) = Тип("ДвоичныеДанные") Тогда
|
||||
Размер = Вложение.Данные.Размер();
|
||||
|
||||
ДанныеВложения = Вложение.Данные;
|
||||
ИмяФайла = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыXML(Вложение.ИмяФайла, "");
|
||||
ЭтоВложениеПисьмо = узФайлЯвляетсяЭлектроннымПисьмом(ИмяФайла, ДанныеВложения);
|
||||
|
||||
Иначе
|
||||
// А может быть и тип ИнтернетПочтовоеСообщение. На данный момент не поддерживаем.
|
||||
Если ТипЗнч(Вложение.Данные) = Тип("ИнтернетПочтовоеСообщение") Тогда
|
||||
НовоеУдаленноеВложение = Объект.НепринятыеВложения.Добавить();
|
||||
НовоеУдаленноеВложение.ИмяВложение = Вложение.Данные.Тема + " " + НСтр("ru = 'от'") + " " +Вложение.Данные.ДатаОтправления;
|
||||
КонецЕсли;
|
||||
Возврат;
|
||||
|
||||
ДанныеВложения = Вложение.Данные.ПолучитьИсходныеДанные();
|
||||
ИмяФайла = узПредставлениеПисьма(Вложение.Данные.Тема, Вложение.Данные.ДатаПолучения) + ".eml";
|
||||
ЭтоВложениеПисьмо = Истина;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Адрес = ПоместитьВоВременноеХранилище(Вложение.Данные, "");
|
||||
Размер = ДанныеВложения.Размер();
|
||||
Адрес = ПоместитьВоВременноеХранилище(ДанныеВложения, "");
|
||||
// - #165 } +++ [13.05.2019]
|
||||
|
||||
ВложениеПисьмаСсылка = ЗаписатьВложениеЭлектронногоПисьмаИзВременногоХранилища(
|
||||
ПисьмоСсылка, Адрес, Вложение.ИмяФайла, Размер,КоличествоПустыхИменВоВложениях);
|
||||
@ -2219,3 +2239,112 @@
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
|
||||
// + #165 Александр { [13.05.2019]
|
||||
#Область ЗаписьВложений
|
||||
|
||||
Функция узФайлЯвляетсяЭлектроннымПисьмом(ИмяФайла, ДвоичныеДанные) Экспорт
|
||||
|
||||
Если узЭтоФайлПисьмо(ИмяФайла)
|
||||
И узДвоичныеДанныеКорректноеИнтернетПочтовоеСообщение(ДвоичныеДанные) Тогда
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
Иначе
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет, являются ли двоичные данные при десериализации ИнтернетПочтовоеСообщение.
|
||||
//
|
||||
// Параметры:
|
||||
// ДвоичныеДанные - ДвоичныеДанные - проверяемые двоичные данные.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Истина, если двоичные данные корректно десериализуются в объект ИнтернетПочтовоеСообщение.
|
||||
//
|
||||
Функция узДвоичныеДанныеКорректноеИнтернетПочтовоеСообщение(ДвоичныеДанные)
|
||||
|
||||
ПочтовоеСообщение = узИнтернетПочтовоеСообщениеИзДвоичныхДанных(ДвоичныеДанные);
|
||||
Возврат ПочтовоеСообщение.СтатусРазбора = СтатусРазбораИнтернетПочтовогоСообщения.ОшибокНеОбнаружено;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция узИнтернетПочтовоеСообщениеИзДвоичныхДанных(ДвоичныеДанные)
|
||||
|
||||
ПочтовоеСообщение = Новый ИнтернетПочтовоеСообщение;
|
||||
ПочтовоеСообщение.УстановитьИсходныеДанные(ДвоичныеДанные);
|
||||
|
||||
Возврат ПочтовоеСообщение;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция узПредставлениеПисьма(ТемаПисьма, ДатаПисьма) Экспорт
|
||||
|
||||
ШаблонПредставления = НСтр("ru = '%1 от %2'");
|
||||
|
||||
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонПредставления,
|
||||
узТемаВзаимодействия(ТемаПисьма),
|
||||
Формат(ДатаПисьма, "ДЛФ=D"));
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция узТемаВзаимодействия(Тема)
|
||||
|
||||
Возврат ?(ПустаяСтрока(Тема), НСтр("ru = '<Без темы>'"), Тема);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет, является ли файл письмом по расширению файла.
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяФайла - Строка - имя проверяемого файла.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Истина, если расширение файла, указывает на то, что он является письмом.
|
||||
//
|
||||
Функция узЭтоФайлПисьмо(ИмяФайла) Экспорт
|
||||
|
||||
МассивРасширенийФайла = узМассивРасширенийФайлаПисьма();
|
||||
РасширениеФайла = узРасширениеФайла(ИмяФайла);
|
||||
|
||||
Возврат (МассивРасширенийФайла.Найти(РасширениеФайла) <> Неопределено);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция узМассивРасширенийФайлаПисьма()
|
||||
|
||||
МассивРасширенийФайла = Новый Массив;
|
||||
МассивРасширенийФайла.Добавить("msg");
|
||||
МассивРасширенийФайла.Добавить("eml");
|
||||
|
||||
Возврат МассивРасширенийФайла;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получает расширение для переданного имени файла.
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяФайла - Строка - имя файла, для которого необходимо получить расширение.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - расширение, полученное из переданного имени файла.
|
||||
//
|
||||
Функция узРасширениеФайла(Знач ИмяФайла) Экспорт
|
||||
|
||||
РасширениеФайла = "";
|
||||
МассивСтрок = СтрРазделить(ИмяФайла, ".", Ложь);
|
||||
Если МассивСтрок.Количество() > 1 Тогда
|
||||
РасширениеФайла = МассивСтрок[МассивСтрок.Количество() - 1];
|
||||
КонецЕсли;
|
||||
|
||||
Возврат РасширениеФайла;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
// - #165 } +++ [13.05.2019]
|
||||
|
@ -640,6 +640,12 @@
|
||||
НомерКартинки = 1;
|
||||
ВложениеСтруктура = Новый Структура();
|
||||
Для Каждого ЭлементВложения Из ИнтернетСообщение.Вложения Цикл
|
||||
// + #165 Александр { [13.05.2019]
|
||||
Если ТипЗнч(ЭлементВложения.Данные) = Тип("ИнтернетПочтовоеСообщение") Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
// - #165 } +++ [13.05.2019]
|
||||
|
||||
пКартинка = Новый Картинка(ЭлементВложения.Данные);
|
||||
ИмяКартинки = "img"+НомерКартинки+"_"+Формат(ТекущаяДата(),"ДФ=ddMMyyyy_hhmmss");
|
||||
пТекстHTML = СтрЗаменить(пТекстHTML,"cid:"+ЭлементВложения.Идентификатор,ИмяКартинки);
|
||||
|
Loading…
x
Reference in New Issue
Block a user