Перейти к основному содержимому

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

Стд::ЭлектроннаяПочта::КаталогПочтыImap

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

метод ОтветитьНаПисьмоОтКоллеги()
пер Адрес = новый АдресПочты("bro@example.ru", "bro")

знч Сервер = "imap.yandex.ru"
знч Порт = 993
знч Аутентификация = новый АутентификацияПочтыПоПаролю("Почта", "Пароль")

пер Параметры = новый ПараметрыПодключенияImap(Сервер, Порт, Аутентификация)
исп Соединение = новый СоединениеImap(Параметры)
пер Входящие = Соединение.ПолучитьКаталог(ВидКаталогаПочты.Входящие)
Входящие.Открыть(РежимОткрытияКаталогаImap.ЧтениеИЗапись)

пер ЗагаловкиНепрочитанных = Входящие.ПолучитьЗаголовкиНепрочитанныхПисем()

пер ИскомоеПисьмо: ПисьмоВСоединенииImap? = Неопределено

для З из ЗагаловкиНепрочитанных
если ИскомоеПисьмо != Неопределено
прервать
;
если З.Заголовки.Отправитель! == Адрес и З.Заголовки.ПолучателиКопии.Пусто()
пер Найденное = Входящие.НайтиПисьмоПоUid(З.Uid)
// Берем только отмеченные письма
если не Найденное.Флаги.Содержит(ФлагПисьма.Помеченное)
ИскомоеПисьмо = Найденное
;
;
;

пер Ответ = ОтветНаПисьмо(ИскомоеПисьмо.Письмо)

ОтправитьОтветПоSmtp(Ответ)

Входящие.УстановитьФлагиПоUid([ИскомоеПисьмо.Uid], [ФлагПисьма.Прочитанное])
;

метод ОтветНаПисьмо(Письмо: Письмо): Письмо
если Письмо.ПолучитьТекст().Размер() != 1
выбросить новый ИсключениеНедопустимыйАргумент("Нужно написать такую обработку")
;
если ВидТекстаПисьма.ПоТипуСодержимого(Письмо.ПолучитьТекст()[0].ВидТекста) != ВидТекстаПисьма.ПростойТекст
выбросить новый ИсключениеНедопустимыйАргумент("Нужно написать такую обработку")
;

пер Текст = Письмо.ПолучитьТекст()[0].Текст

пер ОбразецНовойСтроки = новый Образец("\n")
пер Цитата = Текст.Заменить(ОбразецНовойСтроки, "\n>")


пер ИтоговыйТекст = "Ответ: \n" + Цитата
пер ТемаОтвета = "Re: "
если Письмо.Тема != Неопределено
ТемаОтвета += Письмо.Тема
;

пер Ответ = новый Письмо("me@example.ru", Письмо.Отправитель, ТемаОтвета)
Ответ.УстановитьТекстКакСтроку(ИтоговыйТекст, ВидТекстаПисьма.ПростойТекст)
возврат Ответ
;

метод ОтправитьОтветПоSmtp(Письмо: Письмо)
пер ПараметрыОтправки = новый ПараметрыПодключенияSmtp("smtp.yandex.ru", 465,
новый АутентификацияПочтыПоПаролю("Почта", "Пароль"))
КлиентSmtp.Отправить(ПараметрыОтправки, Письмо)
;

Сравнение

Ссылочное

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

Базовые типы: Закрываемое, Объект


Свойства

Имя

ТолькоЧтение

Имя: Строка

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


Путь

ТолькоЧтение

Путь: Строка

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


Разделитель

ТолькоЧтение

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

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


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

ТолькоЧтение

РодительскийКаталог: КаталогПочты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 - если каталог не существует ИсключениеНедопустимоеСостояние - если текущий каталог не открыт ИсключениеПочты - при других ошибках

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


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

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

Исключения

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

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


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

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

Исключения

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

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


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

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

Исключения

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


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

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

Исключения

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

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


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

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

Исключения

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

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


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

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

Исключения

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

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


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

ПолучитьПисьмо(Индекс: Число): ПисьмоВСоединенииImap
Получить письмо по индексу в каталоге. Нельзя вызывать на закрытом каталоге.

Исключения

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


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

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

Исключения

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


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

СкопироватьПисьма(
Письма: ЧитаемыйМассив<Число>,
Каталог: КаталогПочтыImap)
Скопировать письма с заданными Uid из текущего каталога в указанный. Указанный каталог может быть не открыт, текущий - должен быть открыт. Выполняет команду COPY с диапазонами порядковых номеров писем.

Исключения

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


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

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

Исключения

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


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

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

Исключения

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


Существует

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

Исключения

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


Удалить

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

Исключения

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


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

УстановитьФлагиПоUid(
Uids: ЧитаемыйМассив<Число>,
Флаги: ЧитаемыйМассив<ФлагПисьма>,
Установить: Булево = Истина)
Установить флаг на письма с заданными Uid-ами писем. Установить - признак того, что флаг нужно установить, а не снять. Нельзя вызывать на закрытом каталоге. Выполняет команду STORE <диапазон> +(-)FLAGS.

Исключения

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


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

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

Исключения

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


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

Закрываемое

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

Объект

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

ПолучитьТип

Представление