КаталогПочтыImap
Стд::ЭлектроннаяПочта::КаталогПочтыImap Базовые типы: Закрываемое, Объект |
Иерархия типа
Каталог почты в соединении Imap.
метод ОтветитьНаПисьмоОтКоллеги()
пер Адрес = "bro@example.ru"
пер Параметры = новый ПараметрыПодключенияImap(Сервер(), Порт(), Аутентификация())
исп Соединение = новый СоединениеImap(Параметры)
пер Входящие = Соединение.ПолучитьКаталог(ВидКаталогаПочты.Входящие)
Входящие.Открыть(РежимОткрытияКаталогаImap.ЧтениеИЗапись)
пер ЗагаловкиНепрочитанных = Входящие.ПолучитьЗаголовкиНепрочитанныхПисем()
пер ИскомоеПисьмо: ПисьмоВСессииImap? = Неопределено
для З из ЗагаловкиНепрочитанных
если ИскомоеПисьмо != Неопределено
прервать
;
если З.Заголовки.Отправитель! == Адрес и З.ПолучателиКопии.Пустой()
пер Найденное = Входящие.НайтиПисьмоПоUid(З.Uid)
// Берем только отмеченные письма
если не Найденное.Флаги.Содержит(ФлагПисьма.Помеченное)
ИскомоеПисьмо = Найденное
;
;
;
пер Ответ = ОтветитьНаПисьмо(ИскомоеПисьмо.Письмо)
ОтправитьОтветПоSmtp(Ответ)
Входящие.УстановитьФлагиПоUid([ИскомоеПисьмо.Uid], ФлагПисьма.Прочитанное)
;
метод ОтветНаПисьмо(Письмо: Письмо)
если Письмо.ПолучитьТекст().Размер() != 1
выбросить новый ИсключениеНедопустимыйАргумент("Нужно написать такую обработку")
;
если Письмо.ПолучитьТекст()[0].ВидТекста != ВидТекстаПисьма.ПростойТекст
выбросить новый ИсключениеНедопустимыйАргумент("Нужно написать такую обработку")
;
пер Текст = Письмо.ПолучитьТекст()[0].Текст
пер ОбразецНовойСтроки = новый Образец("\n")
пер Цитата = Текст.Заменить(ОбразецНовойСтроки, "\n>")
пер ИтоговыйТекст = ПолучитьТекстОтвета() + "\н" + Цитата
пер ТемаОтвета = "Re: "
если Письмо.Тема != Неопределено
ТемаОтвета += Письмо.Тема
;
пер Ответ = новый Письмо("me@example.ru", Письмо.Отправитель, ТемаОтвета)
Ответ.УстановитьТекстКакСтроку(ИтоговыйТекст, ВидТекстаПисьма.ПростойТекст)
возврат Ответ
;
Сравнение ссылочное
Свойства
Имя
ТолькоЧтение Имя: Строка |
Имя каталога.
Путь
ТолькоЧтение Путь: Строка |
Полный путь каталога.
Разделитель
ТолькоЧтение Разделитель: Строка |
Разделитель каталогов на текущем сервере.
РодительскийКаталог
ТолькоЧтение РодительскийКаталог: КаталогПочтыImap? |
Родительский каталог. Если каталог является каталогом по умолчанию, то возвращается Неопределено
.
Методы
ВСтроку
ВСтроку(): Строка
Переопределение: ВСтроку |
Полный путь до каталога.
ДобавитьПисьма
ДобавитьПисьма(Письма: ЧитаемыйМассив<Письмо>)
Добавляет письма в каталог почты.
Закрыть
Закрыть()
Переопределение: Закрыть |
Закрыть данный каталог.
КоличествоНепрочитанныхПисем
КоличествоНепрочитанныхПисем(): Число
Получить количество непрочитанных писем в каталоге. Нельзя вызывать на закрытом каталоге. Выполняет команду STATUS.
КоличествоНовыхПисем
КоличествоНовыхПисем(): Число
Получить количество новых писем в каталоге. Нельзя вызывать на закрытом каталоге. Для IMAP количество писем, которые пришли после того, как данные каталог был открыт. Выполняет команду NOOP.
КоличествоПисем
КоличествоПисем(): Число
Получить итоговое количество писем в каталоге. Нельзя вызывать на закрытом каталоге. Результат от вызова к вызову отличается, если между вызовами пришли новые письма. Выполняет команду NOOP.
МожетСодержатьКаталоги
МожетСодержатьКаталоги(): Булево
Возвращает признак того, что каталог может содержать другие каталоги.
МожетСодержатьПисьма
МожетСодержатьПисьма(): Булево
Возвращает признак того, что каталог может содержать письма.
НайтиЗаголовкиПисемПоUid
НайтиЗаголовкиПисемПоUid(Uids: ЧитаемыйМассив<Число>): ЧитаемыйМассив<ЗаголовкиПисьмаВСоединенииImap?>
Получить письма из текущего каталога по Уид-ам. Уид уникален только внутри каталога. Каталог должен быть открыт. Выполняет команду UID FETCH.
НайтиЗаголовкиПисьмаПоUid
НайтиЗаголовкиПисьмаПоUid(Uid: Число): ЗаголовкиПисьмаВСоединенииImap?
Получить письмо из текущего каталога по Уид. Уид уникален только внутри каталога. Каталог должен быть открыт. Выполняет команду UID FETCH.
НайтиПисьмаПоUid
НайтиПисьмаПоUid(Uids: ЧитаемыйМассив<Число>): ЧитаемыйМассив<ПисьмоВСоединенииImap?>
Получить письма из текущего каталога по Уид-ам. Уид уникален только внутри каталога. Каталог должен быть открыт. Выполняет команду UID FETCH.
НайтиПисьмоПоUid
НайтиПисьмоПоUid(Идентификатор: Число): ПисьмоВСоединенииImap?
Получить письмо по Uid в каталоге. Нельзя вызывать на закрытом каталоге.
Открыт
Открыт(): Булево
Признак открытости каталога.
Открыть
Открыть(РежимОткрытия: РежимОткрытияКаталогаImap = РежимОткрытияКаталогаImap.Чтение): КаталогПочтыImap
Открыть данный каталог с заданным режимом. Для удобства возвращается сам объект.
ОтметитьНаУдалениеПоUid
ОтметитьНаУдалениеПоUid(
Идентификаторы: ЧитаемыйМассив<Число>,
Установить: Булево = Истина)
Установить флаг на удаление на письма по их Uid. Установить - признак того, что флаг нужно установить, а не снять.
ОтметитьНаУдалениеПоИндексам
ОтметитьНаУдалениеПоИндексам(
Индексы: ЧитаемыйМассив<Число>,
Установить: Булево)
Установить флаг на удаление на письма по их индексам. Установить - признак того, что флаг нужно установить, а не снять.
ОчиститьУдаленные
ОчиститьУдаленные()
Навсегда удаляет письма помеченный на удаление. Текущий каталог должен быть открыт. Выполняет команду EXPUNGE. Следует иметь в виду, что при удалении писем, порядковые номера изменяются.
ПереименоватьВ
Переименовывает каталог на указанный. Метод работает только на закрытом каталоге. Вызывает команду RENAME.
ПереместитьПисьма
ПереместитьПисьма(
Письма: ЧитаемыйМассив<Число>,
Каталог: КаталогПочтыImap)
Перемещает письма с указанными Uid из текущего каталога в указанный. Указанный каталог может быть не открыт, текущий - должен быть открыт. Выполняет команду MOVE с диапазонами порядковых номеров писем. Некоторые почтовые серверы могут не поддерживать данную операцию.
Подкаталоги
Подкаталоги(СоВсемПоддеревом: Булево = Ложь): ЧитаемыйМассив<КаталогПочтыImap>
Получить все подкаталоги данного каталога. Можно вызывать на закрытом каталоге.
ПолучитьUidValidity
ПолучитьUidValidity(): Число
Получить UidValidity. Каталог должен быть открыт. Выполняет команду UIDVALIDITY. Это уникальный идентификатор каталога почты (https://datatracker.ietf.org/doc/html/rfc9051#section-2.3.1.1). Комбинация имени каталога, UidValidity и uid письма должны задавать письмо. Если почтовый сервис не поддерживает сохранение UidValidity между сеансами подключения, то он должен генерировать новый бОльший по значению, чем предыдущий
ПолучитьДочернийКаталог
ПолучитьДочернийКаталог(Имя: ВидКаталогаПочты|Строка): КаталогПочтыImap?
Получить дочерний каталог по имени и Неопределено
, если каталог не найден. Дочерний каталог необязательно существует физически, чтобы проверить, стоит вызвать Существует(). Можно вызывать на закрытом каталоге.
ПолучитьЗаголовкиНепрочитанныхПисем
ПолучитьЗаголовкиНепрочитанныхПисем(): ЧитаемыйМассив<ЗаголовкиПисьмаВСоединенииImap>
Получить заголовки непрочитанных писем. Нельзя вызывать на закрытом каталоге.
ПолучитьЗаголовкиПисем
ПолучитьЗаголовкиПисем(): ЧитаемыйМассив<ЗаголовкиПисьмаВСоединенииImap>
Перегрузка: ПолучитьЗаголовкиПисем(ИндексНачала: Число, ИндексКонца: Число): ЧитаемыйМассив<ЗаголовкиПисьмаВСоединенииImap> ПолучитьЗаголовкиПисем(Индексы: ЧитаемыйМассив<Число>): ЧитаемыйМассив<ЗаголовкиПисьмаВСоединенииImap> |
Получить заголовки всех писем в каталоге. Нельзя вызывать на закрытом каталоге.
ПолучитьЗаголовкиПисем
ПолучитьЗаголовкиПисем(Индексы: ЧитаемыйМассив<Число>): ЧитаемыйМассив<ЗаголовкиПисьмаВСоединенииImap>
Перегрузка: ПолучитьЗаголовкиПисем(ИндексНачала: Число, ИндексКонца: Число): ЧитаемыйМассив<ЗаголовкиПисьмаВСоединенииImap> ПолучитьЗаголовкиПисем(): ЧитаемыйМассив<ЗаголовкиПисьмаВСоединенииImap> |
Получить массив заголовков писем из массива. Нельзя вызывать на закрытом каталоге.
ПолучитьЗаголовкиПисем
ПолучитьЗаголовкиПисем(
ИндексНачала: Число,
ИндексКонца: Число
): ЧитаемыйМассив<ЗаголовкиПисьмаВСоединенииImap>
Перегрузка: ПолучитьЗаголовкиПисем(Индексы: ЧитаемыйМассив<Число>): ЧитаемыйМассив<ЗаголовкиПисьмаВСоединенииImap> ПолучитьЗаголовкиПисем(): ЧитаемыйМассив<ЗаголовкиПисьмаВСоединенииImap> |
Получить массив заголовков писем из диапазона. Нельзя вызывать на закрытом каталоге.
ПолучитьНепрочитанныеПисьма
ПолучитьНепрочитанныеПисьма(): ЧитаемыйМассив<ПисьмоВСоединенииImap>
Получить непрочитанные письма. Нельзя вызывать на закрытом каталоге.
ПолучитьПисьма
ПолучитьПисьма(): ЧитаемыйМассив<ПисьмоВСоединенииImap>
Перегрузка: ПолучитьПисьма(ИндексНачала: Число, ИндексКонца: Число): ЧитаемыйМассив<ПисьмоВСоединенииImap> ПолучитьПисьма(Индексы: ЧитаемыйМассив<Число>): ЧитаемыйМассив<ПисьмоВСоединенииImap> |
Получить все письма в каталоге. Нельзя вызывать на закрытом каталоге
ПолучитьПисьма
ПолучитьПисьма(Индексы: ЧитаемыйМассив<Число>): ЧитаемыйМассив<ПисьмоВСоединенииImap>
Перегрузка: ПолучитьПисьма(ИндексНачала: Число, ИндексКонца: Число): ЧитаемыйМассив<ПисьмоВСоединенииImap> ПолучитьПисьма(): ЧитаемыйМассив<ПисьмоВСоединенииImap> |
Получить письма с номерами. Нельзя вызывать на закрытом каталоге
ПолучитьПисьма
ПолучитьПисьма(
ИндексНачала: Число,
ИндексКонца: Число
): ЧитаемыйМассив<ПисьмоВСоединенииImap>
Перегрузка: ПолучитьПисьма(Индексы: ЧитаемыйМассив<Число>): ЧитаемыйМассив<ПисьмоВСоединенииImap> ПолучитьПисьма(): ЧитаемыйМассив<ПисьмоВСоединенииImap> |
Получить письма из диапазона. Нельзя вызывать на закрытом каталоге
ПолучитьПисьмо
ПолучитьПисьмо(Индекс: Число): ПисьмоВСоединенииImap
Получить письмо по индексу в каталоге. Нельзя вызывать на закрытом каталоге.
РежимОткрытия
РежимОткрытия(): РежимОткрытияКаталогаImap
Режим открытия каталога. Нельзя вызывать на закрытом каталоге.
СкопироватьПисьма
СкопироватьПисьма(
Письма: ЧитаемыйМассив<Число>,
Каталог: КаталогПочтыImap)
Скопировать письма с заданными Uid из текущего каталога в указанный. Указанный каталог может быть не открыт, текущий - должен быть открыт. Выполняет команду COPY с диапазонами порядковых номеров писем.
СоздатьДляКаталогов
СоздатьДляКаталогов(): Булево
Создает каталог(и) с текущем путем для хранения каталогов. Каталог не может являться содержать одновременно письма и другие каталоги. Можно вызывать на закрытом каталоге. Выполняет команду CREATE.
СоздатьДляПисем
СоздатьДляПисем(): Булево
Создает каталог(и) с текущем путем для хранения писем. Каталог не может являться содержать одновременно письма и другие каталоги. Можно вызывать на закрытом каталоге. Выполняет команду CREATE.
Существует
Существует(): Булево
Существует ли физически каталог. Можно вызывать на закрытом каталоге
Удалить
Удалить()
Удаляет каталог. Метод работает только на закрытом каталоге. Вызывает команду DELETE.
УстановитьФлагиПоUid
УстановитьФлагиПоUid(
Идентификаторы: ЧитаемыйМассив<Число>,
Флаги: ЧитаемыйМассив<ФлагПисьма>,
Установить: Булево = Истина)
Установить флаг на письма с заданными Uid-ами писем. Установить - признак того, что флаг нужно установить, а не снять. Нельзя вызывать на закрытом каталоге. Выполняет команду STORE +(-)FLAGS.диапазон>
УстановитьФлагиПоИндексам
УстановитьФлагиПоИндексам(
Индексы: ЧитаемыйМассив<Число>,
Флаги: ЧитаемыйМассив<ФлагПисьма>,
Установить: Булево = Истина)
Установить флаг на письма по их индексам. Установить - признак того, что флаг нужно установить, а не снять. Нельзя вызывать на закрытом каталоге. Выполняет команду STORE +(-)FLAGS.диапазон>