mirror of
https://github.com/BlizD/Tasks.git
synced 2025-03-25 21:28:57 +02:00
#84 доработки по работе с протоколом IMAP
This commit is contained in:
parent
174eba17b5
commit
2c6e4964c5
@ -571,9 +571,10 @@
|
||||
// +++ #84 79Vlad 13.04.2018
|
||||
//Идентификаторы = Почта.ПолучитьИдентификаторы();
|
||||
|
||||
ЭтоПротоколIMAP = Протокол = ПротоколИнтернетПочты.IMAP;
|
||||
// Так как протокол IMAP поддерживает отборы и есть вероятность повторного получения письма, но с другим идентификатором!?
|
||||
// передадим в параметрах отбора, что получать только не прочтенные письма
|
||||
Если Протокол = ПротоколИнтернетПочты.IMAP Тогда
|
||||
Если ЭтоПротоколIMAP Тогда
|
||||
//Явно укажем из какой папки получать письма
|
||||
пПапкаВходящейПочтыIMAP = ДанныеУчетнойЗаписи.Ссылка.узПапкаВходящейПочтыIMAP;
|
||||
|
||||
@ -586,7 +587,7 @@
|
||||
Иначе
|
||||
Идентификаторы = Почта.ПолучитьИдентификаторы();
|
||||
КонецЕсли;
|
||||
ИсключатьДублиПисем = ДанныеУчетнойЗаписи.Ссылка.узИсключатьДублиПисем;
|
||||
узИсключатьДублиПисем = ДанныеУчетнойЗаписи.Ссылка.узИсключатьДублиПисем;
|
||||
// --- #84 79Vlad 13.04.2018
|
||||
|
||||
Если Идентификаторы.Количество() = 0 И (Не ДанныеУчетнойЗаписи.ОставлятьКопии) Тогда
|
||||
@ -601,10 +602,16 @@
|
||||
// -----------------------------------------------------------------
|
||||
// Определим какие сообщения нужно получать.
|
||||
|
||||
// +++ #84 79Vlad 13.04.2018
|
||||
// +++ Григорьев 01.06.2018
|
||||
//ИдЗагружать = ПолучитьИдентификаторыПисемДляЗагрузки(Идентификаторы, ДанныеУчетнойЗаписи.Ссылка);
|
||||
ИдЗагружать = ПолучитьИдентификаторыПисемДляЗагрузки(Идентификаторы, ДанныеУчетнойЗаписи.Ссылка,ИсключатьДублиПисем);
|
||||
Если ЭтоПротоколIMAP Тогда
|
||||
ИдЗагружать = ПолучитьИдентификаторыПисемДляЗагрузки(Идентификаторы, ДанныеУчетнойЗаписи.Ссылка,узИсключатьДублиПисем);
|
||||
Иначе
|
||||
ИдЗагружать = ПолучитьИдентификаторыПисемДляЗагрузки(Идентификаторы, ДанныеУчетнойЗаписи.Ссылка);
|
||||
КонецЕсли;
|
||||
// --- Григорьев 01.06.2018
|
||||
// --- #84 79Vlad 13.04.2018
|
||||
|
||||
|
||||
Получено = 0;
|
||||
@ -624,21 +631,25 @@
|
||||
|
||||
// +++ #84 79Vlad 01.06.2018
|
||||
//МассивИдентификаторовПорцииДляЗагрузки.Добавить(ИдЗагружать.Получить(Инд));
|
||||
Если ИсключатьДублиПисем Тогда
|
||||
ИскомыйСерверныйИдентификатор = ИдЗагружать.Получить(Инд);
|
||||
Для каждого Стр Из Идентификаторы Цикл
|
||||
Если Стр.ИдентификаторСообщения = ИскомыйСерверныйИдентификатор Тогда
|
||||
Если Стр.Идентификатор.Количество() <> 0 Тогда
|
||||
Идент = Стр.Идентификатор[0];
|
||||
Иначе
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
МассивИдентификаторовПорцииДляЗагрузки.Добавить(Идент);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
Если ЭтоПротоколIMAP Тогда
|
||||
Если узИсключатьДублиПисем Тогда
|
||||
ИскомыйСерверныйИдентификатор = ИдЗагружать.Получить(Инд);
|
||||
Для каждого Стр Из Идентификаторы Цикл
|
||||
Если Стр.ИдентификаторСообщения = ИскомыйСерверныйИдентификатор Тогда
|
||||
Если Стр.Идентификатор.Количество() <> 0 Тогда
|
||||
Идент = Стр.Идентификатор[0];
|
||||
Иначе
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
МассивИдентификаторовПорцииДляЗагрузки.Добавить(Идент);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
Иначе
|
||||
МассивИдентификаторовПорцииДляЗагрузки.Добавить(ИдЗагружать.Получить(Инд));
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
МассивИдентификаторовПорцииДляЗагрузки.Добавить(ИдЗагружать.Получить(Инд));
|
||||
КонецЕсли;
|
||||
Конецесли;
|
||||
// --- #84 79Vlad 01.06.2018
|
||||
|
||||
|
||||
@ -655,25 +666,24 @@
|
||||
|
||||
// +++ #84 79Vlad 13.04.2018
|
||||
//Сообщения = Почта.Выбрать(Ложь, МассивИдентификаторовПорцииДляЗагрузки);
|
||||
//Отметим загруженные сообщения как "Прочитанные"
|
||||
Попытка
|
||||
Сообщения = Почта.Выбрать(Ложь, МассивИдентификаторовПорцииДляЗагрузки, Истина);
|
||||
Исключение
|
||||
Почта.Отключиться();
|
||||
СнятьБлокировкуУчетнойЗаписиДляПолучения(ДанныеУчетнойЗаписи.Ссылка);
|
||||
Возврат;
|
||||
КонецПопытки;
|
||||
Если ЭтоПротоколIMAP Тогда
|
||||
//Отметим загруженные сообщения как "Прочитанные"
|
||||
Попытка
|
||||
Сообщения = Почта.Выбрать(Ложь, МассивИдентификаторовПорцииДляЗагрузки, Истина);
|
||||
Исключение
|
||||
Почта.Отключиться();
|
||||
СнятьБлокировкуУчетнойЗаписиДляПолучения(ДанныеУчетнойЗаписи.Ссылка);
|
||||
Возврат;
|
||||
КонецПопытки;
|
||||
Иначе
|
||||
Сообщения = Почта.Выбрать(Ложь, МассивИдентификаторовПорцииДляЗагрузки);
|
||||
Конецесли;
|
||||
// --- #84 79Vlad 13.04.2018
|
||||
|
||||
|
||||
|
||||
// Запишем их
|
||||
Для Каждого Сообщение Из Сообщения Цикл
|
||||
//// +++ #84 79Vlad 13.04.2018
|
||||
//Если МасРанееЗагруженных.Найти(Сообщение.ИдентификаторСообщения) <> Неопределено Тогда
|
||||
// Продолжить;
|
||||
//КонецЕсли;
|
||||
//// --- #84 79Vlad 13.04.2018
|
||||
|
||||
ДобавлятьВМассивСозданныхПисем = ЛОЖЬ;
|
||||
Попытка
|
||||
@ -724,10 +734,11 @@
|
||||
// Удалим ненужные сообщения на сервере.
|
||||
|
||||
// +++ #84 79Vlad 13.04.2018
|
||||
ЭтоПротоколIMAP = Протокол = ПротоколИнтернетПочты.IMAP;
|
||||
//Так как оба протокола поддерживают удаление - то не будем им запрещать это
|
||||
//Если Протокол = ПротоколИнтернетПочты.POP3 Тогда
|
||||
Если Протокол = ПротоколИнтернетПочты.POP3
|
||||
ИЛИ Протокол = ПротоколИнтернетПочты.IMAP Тогда
|
||||
ИЛИ ЭтоПротоколIMAP Тогда
|
||||
// --- #84 79Vlad 13.04.2018
|
||||
|
||||
|
||||
@ -750,9 +761,11 @@
|
||||
Если МассивКУдалению.Количество() <> 0 Тогда
|
||||
Почта.УдалитьСообщения(МассивКУдалению);
|
||||
// +++ #84 79Vlad 13.04.2018
|
||||
Почта.ОчиститьУдаленныеСообщения();
|
||||
//Также очистим историю загрузки по этим письмам
|
||||
УдалитьИдентификаторыРанееПолученныхПисем(ДанныеУчетнойЗаписи.Ссылка, Идентификаторы, МассивКУдалению);
|
||||
Если ЭтоПротоколIMAP Тогда
|
||||
Почта.ОчиститьУдаленныеСообщения();
|
||||
//Также очистим историю загрузки по этим письмам
|
||||
УдалитьИдентификаторыРанееПолученныхПисем(ДанныеУчетнойЗаписи.Ссылка, Идентификаторы, МассивКУдалению);
|
||||
Конецесли;
|
||||
// --- #84 79Vlad 13.04.2018
|
||||
КонецЕсли;
|
||||
|
||||
@ -760,11 +773,15 @@
|
||||
// Удалим ненужные идентификаторы в регистре сведений.
|
||||
// +++ #84 79Vlad 13.04.2018
|
||||
// Если очищать регистр сведений - то письма будут повторно загружены
|
||||
//Если УдалятьВсе Тогда
|
||||
// УдалитьИдентификаторыВсехРанееПолученныхПисем(ДанныеУчетнойЗаписи.Ссылка);
|
||||
//Иначе
|
||||
// УдалитьИдентификаторыРанееПолученныхПисем(ДанныеУчетнойЗаписи.Ссылка, Идентификаторы, МассивКУдалению);
|
||||
//КонецЕсли;
|
||||
Если НЕ ЭтоПротоколIMAP Тогда
|
||||
// --- #84 79Vlad 13.04.2018
|
||||
Если УдалятьВсе Тогда
|
||||
УдалитьИдентификаторыВсехРанееПолученныхПисем(ДанныеУчетнойЗаписи.Ссылка);
|
||||
Иначе
|
||||
УдалитьИдентификаторыРанееПолученныхПисем(ДанныеУчетнойЗаписи.Ссылка, Идентификаторы, МассивКУдалению);
|
||||
КонецЕсли;
|
||||
// +++ #84 79Vlad 13.04.2018
|
||||
Конецесли;
|
||||
// --- #84 79Vlad 13.04.2018
|
||||
КонецЕсли;
|
||||
|
||||
@ -876,12 +893,15 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьИдентификаторыПисемДляЗагрузки(Идентификаторы, УчетнаяЗапись,ИсключатьДублиПисем = Ложь)
|
||||
//+ #84 Иванов А.Б. 2018-07-23
|
||||
//Функция ПолучитьИдентификаторыПисемДляЗагрузки(Идентификаторы, УчетнаяЗапись)
|
||||
Функция ПолучитьИдентификаторыПисемДляЗагрузки(Идентификаторы, УчетнаяЗапись,узИсключатьДублиПисем = Ложь)
|
||||
//- #84 Иванов А.Б. 2018-07-23
|
||||
|
||||
// Получим список сообщений которые не были раньше получены.
|
||||
//+ #84 Иванов А.Б. 2018-07-23
|
||||
//ТаблицаИдентификаторов = СоздатьТаблицуСИдентификаторами(Идентификаторы);
|
||||
ТаблицаИдентификаторов = СоздатьТаблицуСИдентификаторами(Идентификаторы,ИсключатьДублиПисем);
|
||||
ТаблицаИдентификаторов = СоздатьТаблицуСИдентификаторами(Идентификаторы,узИсключатьДублиПисем);
|
||||
//- #84 Иванов А.Б. 2018-07-23
|
||||
|
||||
Запрос = Новый Запрос;
|
||||
@ -1065,11 +1085,16 @@
|
||||
ЗаписатьИдентификаторПолученногоПисьма(УчетнаяЗапись,
|
||||
Письмо.ИдентификаторНаСервере,
|
||||
Сообщение.ДатаПолучения);
|
||||
|
||||
// +++ #84 79Vlad 13.04.2018
|
||||
ЗаписатьИдентификаторПолученногоПисьма(УчетнаяЗапись,
|
||||
Письмо.ИдентификаторСообщения,
|
||||
Сообщение.ДатаПолучения);
|
||||
ЭтоПротоколIMAP = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УчетнаяЗапись, "ПротоколВходящейПочты") = "IMAP";
|
||||
Если ЭтоПротоколIMAP Тогда
|
||||
ЗаписатьИдентификаторПолученногоПисьма(УчетнаяЗапись,
|
||||
Письмо.ИдентификаторСообщения,
|
||||
Сообщение.ДатаПолучения);
|
||||
КонецЕсли;
|
||||
// --- #84 79Vlad 13.04.2018
|
||||
|
||||
Если Письмо.УведомитьОПрочтении Тогда
|
||||
ЗаписатьНеобходимостьОбработкиУведомленияОПрочтении(Письмо.Ссылка);
|
||||
КонецЕсли;
|
||||
|
Loading…
x
Reference in New Issue
Block a user