Link Search Menu Expand Document

КаталогПочтыImap

Стд::ЭлектроннаяПочта::КаталогПочтыImap
Базовые типы: Закрываемое, Объект

Иерархия типа

graph BT;
КаталогПочтыImap-->Закрываемое;
Закрываемое-->Объект;

Каталог почты в соединении Imap.

метод ОтветитьНаПисьмоОтКоллеги()
    пер Адрес = "bro@example.ru"
     
    пер Параметры = новый ПараметрыПодключенияImap(Сервер(), Порт(), Аутентификация())
    исп Соединение = новый СоединениеImap(Параметры)
    пер Входящие = Соединение.ПолучитьКаталог(ВидКаталогаПочты.Входящие)
    Входящие.Открыть(РежимОткрытияКаталогаImap.ЧтениеИЗапись)
 
    пер ЗагаловкиНепрочитанных = Входящие.ПолучитьЗаголовкиНепрочитанныхПисем()
 
    пер ИскомоеПисьмо: ПисьмоВСессииImap? = Неопределено
 
    для З из ЗагаловкиНепрочитанных
        если ИскомоеПисьмо != Неопределено
            прервать
        ;
        если З.Заголовки.Отправитель! == Адрес и З.ПолучателиКопии.Пустой()
            пер Найденное = Входящие.НайтиПисьмоПоUid(З.Uid)
            // Берем только отмеченные письма
            если не Найденное.Флаги.Содержит(ФлагПисьма.Помеченное)
                ИскомоеПисьмо = Найденное
            ;
        ;
    ;
 
    пер Ответ = ОтветитьНаПисьмо(ИскомоеПисьмо.Письмо)
    ОтправитьОтветПоSmtp(Ответ)
 
    Входящие.УстановитьФлагиПоUid([ИскомоеПисьмо.Uid], ФлагПисьма.Прочитанное)
;
 
метод ОтветНаПисьмо(Письмо: Письмо)
    если Письмо.ПолучитьТекст().Размер() != 1
        выбросить новый ИсключениеНедопустимыйАргумент("Нужно написать такую обработку")
    ;
    если Письмо.ПолучитьТекст()[0].ВидТекста != ВидТекстаПисьма.ПростойТекст
        выбросить новый ИсключениеНедопустимыйАргумент("Нужно написать такую обработку")
    ;
  
    пер Текст = Письмо.ПолучитьТекст()[0].Текст
 
    пер ОбразецНовойСтроки = новый Образец("\n")
    пер Цитата = Текст.Заменить(ОбразецНовойСтроки, "\n>")
 
 
    пер ИтоговыйТекст = ПолучитьТекстОтвета() + "\н" + Цитата
    пер ТемаОтвета = "Re: "    
    если Письмо.Тема != Неопределено
        ТемаОтвета += Письмо.Тема
    ;
     
    пер Ответ = новый Письмо("me@example.ru", Письмо.Отправитель, ТемаОтвета)
    Ответ.УстановитьТекстКакСтроку(ИтоговыйТекст, ВидТекстаПисьма.ПростойТекст)
    возврат Ответ
;

Сравнение ссылочное


Свойства

Имя

ТолькоЧтение Имя: Строка

Имя каталога.


Путь

ТолькоЧтение Путь: Строка

Полный путь каталога.


Разделитель

ТолькоЧтение Разделитель: Строка

Разделитель каталогов на текущем сервере.


РодительскийКаталог

ТолькоЧтение РодительскийКаталог: КаталогПочтыImap?

Родительский каталог. Если каталог является каталогом по умолчанию, то возвращается Неопределено.


Методы

ВСтроку

ВСтроку(): Строка
Переопределение: ВСтроку

Полный путь до каталога.


ДобавитьПисьма

ДобавитьПисьма(Письма: ЧитаемыйМассив<Письмо>)

Добавляет письма в каталог почты.

Исключения

null - если каталог не существует

ИсключениеПочты - при других ошибках


Закрыть

Закрыть()
Переопределение: Закрыть

Закрыть данный каталог.


КоличествоНепрочитанныхПисем

КоличествоНепрочитанныхПисем(): Число

Получить количество непрочитанных писем в каталоге. Нельзя вызывать на закрытом каталоге. Выполняет команду STATUS.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


КоличествоНовыхПисем

КоличествоНовыхПисем(): Число

Получить количество новых писем в каталоге. Нельзя вызывать на закрытом каталоге. Для IMAP количество писем, которые пришли после того, как данные каталог был открыт. Выполняет команду NOOP.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


КоличествоПисем

КоличествоПисем(): Число

Получить итоговое количество писем в каталоге. Нельзя вызывать на закрытом каталоге. Результат от вызова к вызову отличается, если между вызовами пришли новые письма. Выполняет команду NOOP.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если каталог не открыт

ИсключениеПочты - при ошибках работы


МожетСодержатьКаталоги

МожетСодержатьКаталоги(): Булево

Возвращает признак того, что каталог может содержать другие каталоги.


МожетСодержатьПисьма

МожетСодержатьПисьма(): Булево

Возвращает признак того, что каталог может содержать письма.


НайтиЗаголовкиПисемПоUid

Получить письма из текущего каталога по Уид-ам. Уид уникален только внутри каталога. Каталог должен быть открыт. Выполняет команду UID FETCH.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


НайтиЗаголовкиПисьмаПоUid

НайтиЗаголовкиПисьмаПоUid(Uid: Число): ЗаголовкиПисьмаВСоединенииImap?

Получить письмо из текущего каталога по Уид. Уид уникален только внутри каталога. Каталог должен быть открыт. Выполняет команду UID FETCH.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


НайтиПисьмаПоUid

Получить письма из текущего каталога по Уид-ам. Уид уникален только внутри каталога. Каталог должен быть открыт. Выполняет команду UID FETCH.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


НайтиПисьмоПоUid

НайтиПисьмоПоUid(Uid: Число): ПисьмоВСоединенииImap?

Получить письмо по Uid в каталоге. Нельзя вызывать на закрытом каталоге.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


Открыт

Открыт(): Булево

Признак открытости каталога.


Открыть

Открыть(РежимОткрытия: РежимОткрытияКаталогаImap = РежимОткрытияКаталогаImap.Чтение): КаталогПочтыImap

Открыть данный каталог с заданным режимом. Для удобства возвращается сам объект.


ОтметитьНаУдалениеПоUid

ОтметитьНаУдалениеПоUid(
  Uids: ЧитаемыйМассив<Число>,
  Установить: Булево = Истина)

Установить флаг на удаление на письма по их Uid. Установить - признак того, что флаг нужно установить, а не снять.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


ОтметитьНаУдалениеПоИндексам

ОтметитьНаУдалениеПоИндексам(
  Индексы: ЧитаемыйМассив<Число>,
  Установить: Булево)

Установить флаг на удаление на письма по их индексам. Установить - признак того, что флаг нужно установить, а не снять.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


ОчиститьУдаленные

ОчиститьУдаленные()

Навсегда удаляет письма помеченный на удаление. Текущий каталог должен быть открыт. Выполняет команду EXPUNGE. Следует иметь в виду, что при удалении писем, порядковые номера изменяются.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


ПереименоватьВ

ПереименоватьВ(Имя: Строка): Булево

Переименовывает каталог на указанный. Метод работает только на закрытом каталоге. Вызывает команду RENAME.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не закрыт

ИсключениеПочты - при других ошибках


ПереместитьПисьма

ПереместитьПисьма(
  Письма: ЧитаемыйМассив<Число>,
  Каталог: КаталогПочтыImap)

Перемещает письма с указанными Uid из текущего каталога в указанный. Указанный каталог может быть не открыт, текущий - должен быть открыт. Выполняет команду MOVE с диапазонами порядковых номеров писем. Некоторые почтовые серверы могут не поддерживать данную операцию.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


Подкаталоги

Подкаталоги(СоВсемПоддеревом: Булево = Ложь): ЧитаемыйМассив<КаталогПочтыImap>

Получить все подкаталоги данного каталога. Можно вызывать на закрытом каталоге.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


ПолучитьUidValidity

ПолучитьUidValidity(): Число

Получить UidValidity. Каталог должен быть открыт. Выполняет команду UIDVALIDITY. Это уникальный идентификатор каталога почты (https://datatracker.ietf.org/doc/html/rfc9051#section-2.3.1.1). Комбинация имени каталога, UidValidity и uid письма должны задавать письмо. Если почтовый сервис не поддерживает сохранение UidValidity между сеансами подключения, то он должен генерировать новый бОльший по значению, чем предыдущий

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


ПолучитьДочернийКаталог

ПолучитьДочернийКаталог(Имя: ВидКаталогаПочты|Строка): КаталогПочтыImap?

Получить дочерний каталог по имени и Неопределено, если каталог не найден. Дочерний каталог необязательно существует физически, чтобы проверить, стоит вызвать Существует(). Можно вызывать на закрытом каталоге.


ПолучитьЗаголовкиНепрочитанныхПисем

ПолучитьЗаголовкиНепрочитанныхПисем(): ЧитаемыйМассив<ЗаголовкиПисьмаВСоединенииImap>

Получить заголовки непрочитанных писем. Нельзя вызывать на закрытом каталоге.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


ПолучитьЗаголовкиПисем

Получить заголовки всех писем в каталоге. Нельзя вызывать на закрытом каталоге.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


ПолучитьЗаголовкиПисем

Получить массив заголовков писем из массива. Нельзя вызывать на закрытом каталоге.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


ПолучитьЗаголовкиПисем

ПолучитьЗаголовкиПисем(
  ИндексНачала: Число,
  ИндексКонца: Число
): ЧитаемыйМассив<ЗаголовкиПисьмаВСоединенииImap>

Получить массив заголовков писем из диапазона. Нельзя вызывать на закрытом каталоге.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


ПолучитьНепрочитанныеПисьма

ПолучитьНепрочитанныеПисьма(): ЧитаемыйМассив<ПисьмоВСоединенииImap>

Получить непрочитанные письма. Нельзя вызывать на закрытом каталоге.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


ПолучитьПисьма

Получить все письма в каталоге. Нельзя вызывать на закрытом каталоге

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


ПолучитьПисьма

Получить письма с номерами. Нельзя вызывать на закрытом каталоге

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


ПолучитьПисьма

ПолучитьПисьма(
  ИндексНачала: Число,
  ИндексКонца: Число
): ЧитаемыйМассив<ПисьмоВСоединенииImap>

Получить письма из диапазона. Нельзя вызывать на закрытом каталоге

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


ПолучитьПисьмо

ПолучитьПисьмо(Индекс: Число): ПисьмоВСоединенииImap

Получить письмо по индексу в каталоге. Нельзя вызывать на закрытом каталоге.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


РежимОткрытия

Режим открытия каталога. Нельзя вызывать на закрытом каталоге.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


СкопироватьПисьма

СкопироватьПисьма(
  Письма: ЧитаемыйМассив<Число>,
  Каталог: КаталогПочтыImap)

Скопировать письма с заданными Uid из текущего каталога в указанный. Указанный каталог может быть не открыт, текущий - должен быть открыт. Выполняет команду COPY с диапазонами порядковых номеров писем.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


СоздатьДляКаталогов

СоздатьДляКаталогов(): Булево

Создает каталог(и) с текущем путем для хранения каталогов. Каталог не может являться содержать одновременно письма и другие каталоги. Можно вызывать на закрытом каталоге. Выполняет команду CREATE.

Исключения

ИсключениеНедопустимоеСостояние - если каталог уже существует, будет выброшено исключение

ИсключениеПочты - при других ошибках


СоздатьДляПисем

СоздатьДляПисем(): Булево

Создает каталог(и) с текущем путем для хранения писем. Каталог не может являться содержать одновременно письма и другие каталоги. Можно вызывать на закрытом каталоге. Выполняет команду CREATE.

Исключения

ИсключениеНедопустимоеСостояние - если каталог уже существует, будет выброшено исключение

ИсключениеПочты - при других ошибках


Существует

Существует(): Булево

Существует ли физически каталог. Можно вызывать на закрытом каталоге

Исключения

ИсключениеПочты - при ошибках соединения


Удалить

Удалить()

Удаляет каталог. Метод работает только на закрытом каталоге. Вызывает команду DELETE.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если каталог не закрыт

ИсключениеПочты - при ошибках удаления


УстановитьФлагиПоUid

УстановитьФлагиПоUid(
  Uids: ЧитаемыйМассив<Число>,
  Флаги: ЧитаемыйМассив<ФлагПисьма>,
  Установить: Булево = Истина)

Установить флаг на письма с заданными Uid-ами писем. Установить - признак того, что флаг нужно установить, а не снять. Нельзя вызывать на закрытом каталоге. Выполняет команду STORE <диапазон> +(-)FLAGS.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


УстановитьФлагиПоИндексам

УстановитьФлагиПоИндексам(
  Индексы: ЧитаемыйМассив<Число>,
  Флаги: ЧитаемыйМассив<ФлагПисьма>,
  Установить: Булево = Истина)

Установить флаг на письма по их индексам. Установить - признак того, что флаг нужно установить, а не снять. Нельзя вызывать на закрытом каталоге. Выполняет команду STORE <диапазон> +(-)FLAGS.

Исключения

null - если каталог не существует

ИсключениеНедопустимоеСостояние - если текущий каталог не открыт

ИсключениеПочты - при других ошибках


Список унаследованных методов

Объект