Получить письма
Элемент получает письма из указанной папки почтового ящика Microsoft 365 и сохраняет их в переменную типа List<Message> вместе с вложениями. Для корректной работы следует поместить элемент в контейнер Microsoft 365.
Свойства
Описание общих свойств элемента см. в разделе Свойства элемента .
Символ * в названии свойства указывает на обязательность его заполнения.
| Свойство | Тип | Описание |
|---|---|---|
| Аккаунт: | ||
| Учетная запись | String | Адрес почтового ящика, например "robot@company.ru". Если не заполнено — ящик пользователя, под которым выполнен вход. При входе по сертификату или секрету обязательно. См. Учетная запись в элементах |
| Параметры: | ||
| Папка | String | Отображаемое имя папки на языке ящика, например "Входящие". См. Имена папок. По умолчанию "Inbox" |
| ID | String | Идентификатор письма. Если заполнено, элемент возвращает только это письмо, остальные параметры не учитываются |
| Запрос | String | Условие отбора писем в синтаксисе OData $filter, например "hasAttachments eq true". См. Условия отбора |
| Кол-во | Int32 | Максимальное количество писем, не более 1000. По умолчанию 50 |
| Только непрочтенные | Boolean | Получать только непрочитанные письма. По умолчанию включено |
| Сортировка | - | Порядок писем. Доступные значения: NewFirst — сначала новые, OldFirst — сначала старые. По умолчанию NewFirst |
| Пометить прочитанными | Boolean | Пометить полученные письма как прочитанные. По умолчанию выключено |
| Результат: | ||
| Результат | List<Message> | Переменная для сохранения списка писем. Если писем нет — пустой список |
Важно: Значение Папки по умолчанию "Inbox" подходит только для англоязычного ящика. Для русскоязычного ящика укажите "Входящие".
Условия отбора
Свойство Запрос задает условие по свойствам письма. Строковые значения указываются в одинарных кавычках, даты — в формате ISO 8601 (UTC).
| Задача | Значение свойства Запрос |
|---|---|
| Письма от отправителя | "from/emailAddress/address eq 'bank@bank.ru'" |
| Письма с вложениями | "hasAttachments eq true" |
| Письма с заданной темой | "subject eq 'Ежедневный отчет'" |
| Письма, полученные после даты | "receivedDateTime ge 2026-09-01T00:00:00Z" |
| Важные письма | "importance eq 'high'" |
| Несколько условий | "hasAttachments eq true and from/emailAddress/address eq 'bank@bank.ru'" |
При включенном свойстве Только непрочтенные оно объединяется с Запросом через and.
Практические примеры
Пример 1: непрочитанные письма из папки «Входящие»
- Учетная запись:
"robot@company.ru" - Папка:
"Входящие" - Кол-во:
20 - Только непрочтенные: включено
- Пометить прочитанными: включено
- Результат:
messages
Количество полученных писем — messages.Count, тема первого письма — messages[0].Subject.
Пример 2: письма от банка с вложениями за последние сутки
- Папка:
"Входящие" - Запрос:
"from/emailAddress/address eq 'bank@bank.ru' and hasAttachments eq true and receivedDateTime ge " + DateTime.UtcNow.AddDays(-1).ToString("yyyy-MM-ddTHH:mm:ssZ") - Только непрочтенные: выключено
- Сортировка:
OldFirst
Пример 3: сохранение вложений на диск
После элемента с результатом messages добавьте элемент выполнения кода:
foreach (var m in messages)
{
if (m.Attachments == null) continue;
foreach (var a in m.Attachments.OfType<Microsoft.Graph.Models.FileAttachment>())
System.IO.File.WriteAllBytes(System.IO.Path.Combine(@"C:\Robot\Inbox", a.Name), a.ContentBytes);
}Сохраняются файловые вложения. Вложенные письма и ссылки на облачные файлы пропускаются.
Рекомендации
- Ограничивайте выборку свойствами Кол-во и Запрос: элемент загружает вложения каждого письма, и большие выборки обрабатываются долго.
- Чтобы не обрабатывать одно письмо повторно, после обработки перемещайте его в отдельную папку элементом Переместить письмо или отмечайте категорией элементом Установить категории письма.
Возможные ошибки
| Ошибка | Причина и решение |
|---|---|
Sequence contains no elements | Папка не найдена. Проверьте имя папки с учетом языка ящика и то, что папка находится на верхнем уровне |
Access is denied | Не заполнена Учетная запись при входе от имени приложения или не выдано разрешение Mail.Read |
Invalid filter clause | Ошибка в синтаксисе Запроса: проверьте кавычки, имена свойств и формат даты |