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

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


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

Закрываемое​

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

Объект​

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

ПолучитьТип

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