Загрузить сообщения.
Функция ЗагрузитьСообщения(Знач УчетнаяЗапись, Знач ПараметрыЗагрузки = Неопределено) Экспорт
// Используется для проверки возможности входа на почтовый ящик.
Перем РежимТестирования;
// Получать только заголовки писем.
Перем ПолучениеЗаголовков;
// Приводить почтовые сообщения к простому типу;
Перем ПриводитьСообщенияКТипу;
// Заголовки или идентификаторы писем, полные сообщения по которым требуется получить.
Перем ЗаголовкиИдентификаторы;
Если ПараметрыЗагрузки.Свойство("РежимТестирования") Тогда
РежимТестирования = ПараметрыЗагрузки.РежимТестирования;
Иначе
РежимТестирования = Ложь;
КонецЕсли;
Если ПараметрыЗагрузки.Свойство("ПолучениеЗаголовков") Тогда
ПолучениеЗаголовков = ПараметрыЗагрузки.ПолучениеЗаголовков;
Иначе
ПолучениеЗаголовков = Ложь;
КонецЕсли;
УстановитьОтключениеБезопасногоРежима(Истина);
Профиль = ИнтернетПочтовыйПрофиль(УчетнаяЗапись, Истина);
УстановитьОтключениеБезопасногоРежима(Ложь);
Если ПараметрыЗагрузки.Свойство("ЗаголовкиИдентификаторы") Тогда
ЗаголовкиИдентификаторы = ПараметрыЗагрузки.ЗаголовкиИдентификаторы;
Иначе
ЗаголовкиИдентификаторы = Новый Массив;
КонецЕсли;
НаборСообщенийДляУдаления = Новый Массив;
Протокол = ПротоколИнтернетПочты.POP3;
Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УчетнаяЗапись, "ПротоколВходящейПочты") = "IMAP" Тогда
Протокол = ПротоколИнтернетПочты.IMAP;
КонецЕсли;
УстановитьОтключениеБезопасногоРежима(Истина);
Соединение = Новый ИнтернетПочта;
Соединение.Подключиться(Профиль, Протокол);
Попытка
Если ПолучениеЗаголовков Тогда
НаборПисем = Соединение.ПолучитьЗаголовки();
ИначеЕсли Не РежимТестирования Тогда
НастройкиТранспорта = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(УчетнаяЗапись, "ПротоколВходящейПочты,ОставлятьКопииСообщенийНаСервере,ПериодХраненияСообщенийНаСервере");
Если НастройкиТранспорта.ПротоколВходящейПочты = "IMAP" Тогда
НастройкиТранспорта.ОставлятьКопииСообщенийНаСервере = Истина;
НастройкиТранспорта.ПериодХраненияСообщенийНаСервере = 0;
КонецЕсли;
Если НастройкиТранспорта.ОставлятьКопииСообщенийНаСервере Тогда
Если ЗаголовкиИдентификаторы.Количество() = 0 И НастройкиТранспорта.ПериодХраненияСообщенийНаСервере > 0 Тогда
Заголовки = Соединение.ПолучитьЗаголовки();
НаборСообщенийДляУдаления = Новый Массив;
Для Каждого ЭлементЗаголовок Из Заголовки Цикл
ТекущаяДата = ТекущаяДатаСеанса();
РазницаДат = (ТекущаяДата - ЭлементЗаголовок.ДатаОтправления) / (3600*24);
Если РазницаДат >= НастройкиТранспорта.ПериодХраненияСообщенийНаСервере Тогда
НаборСообщенийДляУдаления.Добавить(ЭлементЗаголовок);
КонецЕсли;
КонецЦикла;
КонецЕсли;
АвтоматическиУдалятьСообщенияПриВыбореССервера = Ложь;
Иначе
АвтоматическиУдалятьСообщенияПриВыбореССервера = Истина;
КонецЕсли;
НаборПисем = Соединение.Выбрать(АвтоматическиУдалятьСообщенияПриВыбореССервера, ЗаголовкиИдентификаторы);
Если НаборСообщенийДляУдаления.Количество() > 0 Тогда
Соединение.УдалитьСообщения(НаборСообщенийДляУдаления);
КонецЕсли;
КонецЕсли;
Соединение.Отключиться();
Исключение
Попытка
Соединение.Отключиться();
Исключение
// Обработка и журналирование исключения не требуется, т.к.
// в вызывающий код передается исходное исключение, которое будет там обработано.
КонецПопытки;
ВызватьИсключение;
КонецПопытки;
УстановитьОтключениеБезопасногоРежима(Ложь);
Если РежимТестирования Тогда
Возврат Истина;
КонецЕсли;
Если ПараметрыЗагрузки.Свойство("ПриводитьСообщенияКТипу") Тогда
ПриводитьСообщенияКТипу = ПараметрыЗагрузки.ПриводитьСообщенияКТипу;
Иначе
ПриводитьСообщенияКТипу = Истина;
КонецЕсли;
НаборСообщений = НаборПисем;
Если ПриводитьСообщенияКТипу Тогда
Если ПараметрыЗагрузки.Свойство("Колонки") Тогда
НаборСообщений = АдаптированныйНаборПисем(НаборПисем, ПараметрыЗагрузки.Колонки);
Иначе
НаборСообщений = АдаптированныйНаборПисем(НаборПисем);
КонецЕсли;
КонецЕсли;
Возврат НаборСообщений;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ЗагрузитьСообщениеОбмена (БСП)
ЗагрузитьСообщениеОбменаДанными (БСП)
ЗагрузитьПочтовыеСообщения (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)