Чтение почты (MS Exchange)
.aa17767b.png&w=640&q=75)
Компонент для чтения электронной почты из MS Exchange с возможностью фильтрации и сортировки. Работает в контейнере активности Сервер MS Exchange
Свойства
Описание общих свойств элемента см. в разделе Свойства элемента.
Символ * в названии свойства указывает на обязательность заполнения.
| Свойство | Тип | Описание | 
|---|---|---|
| Вывод | ||
| Переменная* | List<LTools.Office.Model.OMailMessage> | Переменная вывода для сохранения списка полученных писем | 
| Exchange | ||
| Путь к папке | String | Папка, из которой будет происходить чтение писем. Используйте только системные английские названия папок. Пример: "Inbox" | 
| Только непрочитанные | Boolean | Загрузить только те письма, которые помечены как непрочитанные. | 
| Кол-во | Int32 | Максимальное количество писем, которые нужно загрузить. По умолчанию установлено30 писем. | 
| Направление | Enum (Ascending/Descending) | Направление сортировки (Ascending/Descending). Если установлено Descending, то письма будут сортироваться в порядке убывания (например, от самых новых к старым). | 
| Вложения | Boolean | Определяет, нужно ли получать вложения из писем | 
| Запрос | String | Запрос для фильтрации писем. Ниже приведены примеры свойства. | 
| Общий ящик | String | Укажите адрес общего почтового ящика . Пример: "info@company.com" | 
| Сортировать | Enum (Ниже перечислены доступные свойства) | Функция сортировки доступна с версии 1.24.8 | 
Свойства сортировки
Доступные поля для сортировки писем:
| Поле | Описание | Пример SQL выражения | 
|---|---|---|
| Bcc | Сортировка по скрытой копии | ”@SQL="urn:schemas:httpmail:bcc" ASC” | 
| Cc | Сортировка по копии | ”@SQL="urn:schemas:httpmail:cc" DESC” | 
| Receive Time | Сортировка по времени получения | ”@SQL="urn:schemas:httpmail:datereceived" DESC” | 
| From | Сортировка по отправителю | ”@SQL="urn:schemas:httpmail:from" ASC” | 
| To | Сортировка по получателю | ”@SQL="urn:schemas:httpmail:to" ASC” | 
| Subject | Сортировка по теме письма | ”@SQL="urn:schemas:httpmail:subject" DESC” | 
| Categories | Сортировка по категориям | ”@SQL="urn:schemas:httpmail:categories" ASC” | 
Параметры Запрос
Свойство “Запрос” позволяет фильтровать письма по различным критериям. Ниже приведены примеры фильтров для разных сценариев:
Общий синтаксис фильтров
"поле:значение"  // простой фильтр
"поле1:значение1 AND поле2:значение2"  // комбинированный фильтрПримеры фильтров
| Тип фильтра | Пример запроса | Описание | 
|---|---|---|
| По теме | "subject:welcome" | Письма, содержащие “welcome” в теме | 
"subject:работа*" | Письма, где тема начинается с “работа” | |
| По отправителю | "from:ivan.ivanov@example.com" | Письма от конкретного адреса | 
"from:example.com" | Письма от любого адреса домена example.com | |
| По содержимому тела | "body:'please review'" | Письма, содержащие фразу “please review” в теле | 
"body:'Ознакомьтесь*'" | Письма, где тело начинается с “Ознакомьтесь” | |
| По дате | "received:today" | Письма, полученные сегодня | 
"received:>=28/04/2025" | Письма, полученные начиная с 28.04.2025 | |
"received:25/04/2025..28/04/2025" | Письма, полученные в указанном диапазоне дат | |
| По вложениям | "hasattachment:true" | Письма с вложениями | 
"attachments:.pdf" | Письма с PDF-вложениями | |
| По важности | "importance:high" | Письма с высокой важностью | 
| По категориям | "category:'Red category, Blue category'" | Письма с указанными категориями | 
| По типу | "kind:meetings" | Письма-встречи (календарные приглашения) | 
Ограничения
Следующие фильтры в настоящее время не поддерживаются:
- Фильтрация по конкретным типам вложений (например, 
.pdf) - Фильтрация по категориям (“category:‘Red category, Blue category’”)
 - Поиск фраз с пробелами в теле письма (работает только по отдельным словам)
 
Расширенный SQL-синтаксис (для сложных фильтров)
"@SQL=urn:schemas:httpmail:subject like '%welcome%'"
"@SQL=urn:schemas:httpmail:textdescription like '%Primo RPA%'"
"@SQL=urn:schemas:httpmail:datereceived >= '2025-04-25' AND urn:schemas:httpmail:datereceived <= '2025-04-28'"
"@SQL=urn:schemas:httpmail:hasattachment = true"Для фильтрации писем на русском языке используйте русскоязычные ключевые слова в запросах
Системные названия папок Exchange
Название папки в почте Exhcange зависит от региональных настроек почтового сервера. В некоторых случаях может использоваться локализованное название (например, Входящие)
| Название на русском языке | Системное название | Описание | 
|---|---|---|
| Входящие | Inbox | Входящие письма | 
| Отправленные | SentItems | Отправленные письма | 
| Черновики | Drafts | Черновики | 
| Удаленные | DeletedItems | Корзина | 
| Спам | JunkEmail | Нежелательная почта | 
| Архив | Archive | Архив | 
| Задачи | Tasks | Задачи | 
| Календарь | Calendar | Календарь | 
| Контакты | Contacts | Контакты | 
Работа с путями и подпапками
Для чтения писем из подпапок укажите путь к папке, используя один прямой слеш (/) в качестве разделителя. Данный способ работает одинаково хорошо как с кириллическими, так и с латинскими именами папок.
Рекомендуемые форматы:
"Входящие/Счета"— папка “Счета” внутри “Входящих”"Входящие/Счета/2025"— вложенная папка “2025”@"Inbox/Projects"— использование verbatim-строки в C# для удобства
Альтернативный вариант:
Также работает указание двух прямых слешей (//):
"Входящие//Счета""Inbox//Projects"
Протокол IMAP, используемый для работы с почтой, внутренне оперирует разделителем /, поэтому спользование обратного слеша (\) в качестве разделителя не работает. Для папки Inbox и ее подпапок действуют те же правила — используйте прямой слеш.
Примечание: При чтении родительской папки письма из её подпапок не включаются в результат. Для обработки писем из подпапок необходимо указывать путь к каждой подпапке отдельно, используя английские названия для системных папок и фактические названия для пользовательских подпапок.
Только код
Пример использования элемента в процессе с типом Только код (Pure code):
C#
LTools.Office.MSExchangeApp app = LTools.Office.MSExchangeApp.InitSvc(wf, Microsoft.Exchange.WebServices.Data.ExchangeVersion.Exchange2013_SP1, "server url", "login", "pass", "domain");
List<LTools.Office.Model.OMailMessage> msg = app.ReadMail("Inbox", true, false, 10);