Письмо со счётом или заявкой легко сохранить вручную, пока таких сообщений мало. При росте потока появляются менее заметные ошибки: сотрудник дважды переносит один файл, заменяет одноимённое вложение, теряет связь с перепиской или принимает отправленный запрос за успешную запись в рабочей системе.
Надёжная автоматизация обработки вложений из электронной почты должна дать отчёт по каждому обнаруженному файлу. Недостаточно скачать документ в папку: нужно сохранить исходник, проверить вложение, связать результат с письмом и явно обработать повтор или ошибку. Ниже — схема требований, которую можно использовать при описании процесса и подготовке пилота.
Какие операции с вложениями повторяются
В типовом процессе сотрудник открывает письмо, сохраняет вложения, раскладывает их по папкам, читает реквизиты и переносит сведения в рабочую систему. Иногда он дополнительно переименовывает файл, проверяет сумму или номер заявки и сообщает коллегам о результате.
Эту работу полезно разделить на два контура:
- Обработка письма получает сообщение, фиксирует его идентификатор, сохраняет исходную копию, перечисляет вложения и передаёт каждый файл дальше.
- Обработка документа определяет тип содержимого, извлекает реквизиты, проверяет обязательные поля и готовит запись для целевой системы.
Такое разделение показывает границу ответственности. Если файл не появился во входящей очереди, причина относится к получению почты. Если файл получен, но из плохого скана нельзя извлечь номер, проблема относится к обработке документа. В журнале это должны быть разные этапы и разные причины ошибки.
Автоматизировать можно не весь маршрут сразу. Например, первый этап только сохраняет вложения и регистрирует их, а реквизиты пока проверяет человек. Это уже защищает связь с исходным электронным письмом, но не создаёт ложного впечатления, что система умеет понимать любой документ.
Как выбрать метод
Метод зависит от того, нужно ли просто разложить письма по папкам, скачать файлы или провести документ через проверки и записать результат в другую систему.
| Метод | Для каких задач подходит | Ограничения и права | Что проверить до выбора |
|---|---|---|---|
| Правила почты | Переместить сообщение в папку, отметить или переслать его по простому условию | Возможности зависят от почтовой системы; правило само по себе не проверяет содержимое файла | Доступные условия, действия и порядок выполнения правил в используемой версии |
| Outlook/VBA | Локальный сценарий вокруг настольного Outlook | Зависит от платформы, политики запуска макросов, профиля пользователя и работающего приложения | Поддержку нужной версии и платформы, политику безопасности и способ работы без пользователя |
| Интеграционный сценарий | Связать почту, хранилище, проверку и рабочую систему единым маршрутом | Нужны учётные данные, обработка ошибок и отдельное хранение состояния | Доступные узлы, режим получения писем, формат вложений и поведение при повторном запуске |
| API почты | Получать сообщения и вложения по идентификаторам с управляемыми правами | Нужны регистрация доступа, разрешения API, учёт ограничений конкретной платформы | Официальную документацию версии API, тип доступа и минимально необходимые разрешения |
| OCR | Извлекать текст из сканов и изображений | Распознавание не подтверждает правильность реквизитов; качество зависит от входного документа | Поддерживаемые форматы, языки и качество на обезличенной выборке своих документов |
Если таблица не помещается, прокрутите её вправо. С клавиатуры используйте стрелки.
В документации Microsoft Graph v1.0 описано получение коллекции вложений сообщения через его идентификатор. Для этой операции указано разрешение Mail.Read в делегированном или прикладном варианте. Это подтверждает возможность API в Microsoft Graph, но не совместимость с любой почтовой системой и не факт готового подключения.
Документация узла Email Trigger (IMAP) в n8n описывает получение писем с IMAP-сервера, выбор почтового ящика, загрузку вложений и форматы RAW, Resolved и Simple. В ней также отмечено, что загрузка вложений увеличивает обработку, а формат Simple не предназначен для сбора встроенных вложений. Эти свойства относятся к документированному узлу n8n; фактический доступ конкретного ящика и поведение выбранной версии нужно проверить перед внедрением.
Как организовать доступ и входящую очередь
Для автоматизации лучше выделить отдельный ящик или согласованную папку внутри существующего. Тогда граница процесса понятна: система забирает только предназначенные ей сообщения, а сотрудник видит, какие письма ещё не поступили в работу.
Доступ выдавайте по принципу минимальных прав. Если процессу нужно читать одну папку, не следует без необходимости разрешать отправку писем или работу со всем ящиком. Конкретный набор прав зависит от почтовой платформы и выбранного способа подключения.
При регистрации письма сохраните:
- идентификатор сообщения из почтового источника и отдельный внутренний идентификатор записи;
- дату получения и адрес согласованной входящей очереди;
- ссылку на исходную копию или её внутренний идентификатор;
- перечень обнаруженных вложений;
- имя, заявленный тип и размер каждого файла;
- идентификатор вложения, если его предоставляет источник.
Форматы и предельный размер задают в требованиях проекта. Не стоит считать расширение файла достаточным доказательством его типа. Исходную копию сохраняют по внутреннему регламенту так, чтобы позднее можно было сопоставить результат с конкретным письмом, но доступ к ней имели только назначенные участники.
Базовый поток выглядит так:
- Выделенный ящик или папка принимает письмо.
- Система регистрирует идентификатор сообщения и исходную копию.
- Для каждого вложения фиксирует метаданные и вычисляет хеш содержимого.
- После проверок передаёт результат в рабочую систему либо в очередь исключений.
Как обработать и проверить вложение
Для каждого файла нужен отдельный маршрут, даже если письмо содержит несколько вложений. Тогда ошибка одного документа не скрывает судьбу остальных.
Рекомендуемая последовательность:
- Скачать вложение в изолированное место и связать его с записью письма.
- Сверить размер, допустимый формат и фактический тип содержимого с правилами процесса.
- Вычислить хеш файла и проверить, встречалась ли такая комбинация идентификаторов и содержимого.
- Извлечь нужные поля — обычным разбором данных, OCR или другим согласованным методом.
- Проверить обязательные поля, форматы и допустимые значения.
- Сверить критичные реквизиты по заданным правилам или передать сомнительный результат человеку.
- Отправить данные в рабочую систему.
- Получить и сохранить идентификатор созданной либо обновлённой записи.
- Присвоить файлу итоговый статус и записать событие в журнал.
Тип и целостность вложения
Недоверенный файл нельзя исполнять, открывать с активным содержимым или передавать в среду с избыточными правами. Несоответствие расширения фактическому типу, запрещённый формат или подозрительное содержимое — причины остановить автоматический маршрут и изолировать файл по принятому правилу.
Успешное распознавание текста ещё не означает, что документ готов к записи. Например, номер найден, но сумма отсутствует. В таком случае система сохраняет извлечённые значения, отмечает неполноту и направляет файл в ручную очередь, а не подставляет вымышленное значение.
Исходное письмо и место сохранения
Запись результата должна содержать обратную связь с письмом и конкретным вложением. Одного имени файла недостаточно: разные отправители могут прислать свои invoice.pdf, а один отправитель — обновить документ, сохранив прежнее имя.
Факт отправки запроса в рабочую систему не считается успехом. Успешная передача подтверждена, только когда целевая система вернула результат, а сценарий сохранил идентификатор записи. Если подтверждения нет, файл получает статус «ожидает повтора» или «ручная очередь» согласно правилам проекта.
Как пережить повторы и изменения
Идемпотентность означает, что повтор одного события не создаёт лишний результат. Для почтовых вложений её нужно проектировать на двух уровнях: письмо и файл.
Внутренний ключ письма связывают с message_id, полученным от почтового источника. До внедрения нужно проверить, сохраняется ли этот идентификатор при перемещении и повторной доставке сообщения в выбранной платформе. Для файла можно использовать сочетание внутреннего ключа письма, attachment_id и content_hash, где content_hash — хеш фактического содержимого. Имя остаётся полезным атрибутом, но не ключом уникальности.
Ниже приведён синтетический учебный пример. Это не клиентский кейс, не выгрузка Switch On AI и не результат выполненного теста.
| message_id | attachment_id | Имя | content_hash | Найденное состояние | Действие | Итоговый статус | Связь с исходником | Причина ручной обработки |
|---|---|---|---|---|---|---|---|---|
| M-101 | A-1 | invoice.pdf | H-A | Не найдено | Обработать и записать результат | Записан | M-101/A-1 | — |
| M-101 | A-1 | invoice.pdf | H-A | Полный дубль | Не создавать вторую запись, сохранить событие повтора | Записан ранее | M-101/A-1 | — |
| M-102 | A-1 | invoice.pdf | H-B | Совпало только имя | Обработать как новый файл | Записан | M-102/A-1 | — |
| M-103 | A-1 | invoice.pdf | H-C1 | Первая версия | Обработать как версию 1 | Записан | M-103/A-1/v1 | — |
| M-103 | A-1 | invoice.pdf | H-C2 | Изменилось содержимое известного вложения | Зарегистрировать версию 2, не перезаписывать молча | Ручная очередь или повторная обработка | M-103/A-1/v2 | Изменённое вложение |
Если таблица не помещается, прокрутите её вправо. С клавиатуры используйте стрелки.
Повторная доставка
При повторной доставке M-101 сочетание идентификаторов и хеша не изменилось. Сценарий не создаёт вторую запись, но добавляет в журнал событие повтора. Это позволяет отличить корректно пропущенный дубль от незамеченного письма.
Частичный сбой требует отдельного состояния. Допустим, система уже сохранила файл, но не записала извлечённые поля из-за недоступности целевой системы. В журнале остаются файл, хеш, завершённый этап и статус «ожидает повтора». Следующая попытка продолжает работу с последнего подтверждённого этапа, а не загружает документ как неизвестный и не теряет его.
Одноимённые и изменённые вложения
M-102 содержит другое содержимое под тем же именем invoice.pdf. Новый message_id и другой хеш означают, что это новый файл.
В M-103 идентификаторы письма и вложения уже известны, но хеш изменился с H-C1 на H-C2. Автоматизация регистрирует новую версию и действует по заранее принятому правилу: повторно обрабатывает её либо передаёт человеку. Молчаливо заменить первую версию нельзя, иначе журнал перестанет объяснять, по какому исходнику появилась запись.

Что делать с исключениями
Исключение не должно исчезать в общей ошибке сценария. Для него создают запись в ручной очереди с причиной, исходником, ответственным маршрутом и допустимым следующим действием.
| Ситуация | Автоматическое действие | Что решает человек или отдельный процесс |
|---|---|---|
| Архив с паролем | Не подбирать пароль, зафиксировать недоступность содержимого | Получить пароль согласованным способом или запросить открытый документ |
| Плохой скан | Сохранить результат распознавания и отметить неполные поля | Проверить реквизиты либо запросить читаемую копию |
| Несколько документов | Зарегистрировать исходный файл и обнаруженную неоднозначность | Определить правила разделения и связь частей с результатами |
| Целевая система недоступна | Сохранить файл и подготовленные данные, назначить повтор | Дождаться подключения или остановить попытки по принятому пределу |
| Подозрительный файл | Не исполнять, изолировать и ограничить доступ | Проверить по внутренней процедуре безопасности |
Если таблица не помещается, прокрутите её вправо. С клавиатуры используйте стрелки.
Если одно письмо содержит несколько самостоятельных документов, каждый получает собственный статус. Ошибка одного файла не должна помечать всё письмо как успешно обработанное или полностью потерянное.
Как вести журнал, хранение и контроль результата
Журнал отвечает на четыре вопроса: откуда пришёл файл, что с ним делала система, чем закончилась каждая попытка и где находится результат.
Для каждой попытки полезно сохранять:
message_idиattachment_id;- ссылку на исходную копию;
- имя, фактический тип, размер и хеш файла;
- номер версии и номер попытки;
- завершённый этап и текущий статус;
- извлечённые поля либо безопасную ссылку на них;
- идентификатор записи целевой системы;
- текст или код ошибки;
- причину ручной обработки;
- дату следующей попытки и ответственного;
- время событий без подмены фактического результата ожидаемым.
Запрет молчаливой потери можно выразить проверяемым правилом: каждый обнаруженный файл обязан получить один из явных состояний — «записан», «ручная очередь», «изолирован» или «ожидает повтора». Письмо нельзя закрыть как обработанное, пока судьба всех его вложений не определена.
Права на журнал, исходники и извлечённые реквизиты назначают по ролям. Срок хранения нельзя брать из универсального совета: его устанавливают по внутреннему регламенту, типу документов и применимым требованиям организации. По истечении срока удаление также должно быть управляемым и проверяемым.
Уведомления нужны не о каждом успешном техническом шаге, а о событиях, требующих решения: росте ручной очереди, исчерпании повторов, подозрительном файле или отсутствии подтверждения целевой системы.
Как запустить пилот и обсудить внедрение
Пилот готовят на обезличенном наборе, который включает не только обычные письма. Добавьте повторную доставку, одинаковые имена с разным содержимым, изменённую версию, плохой скан, запрещённый формат и временную недоступность целевой системы.
Например, для будущей проверки можно подготовить синтетический набор из 20 писем и 24 вложений. Ожидаемое распределение задают до запуска: 18 допустимых документов должны получить подтверждённую запись, 4 — попасть в ручную очередь, 2 запрещённых файла — быть изолированы. Контроль учёта: 18 + 4 + 2 = 24.
Расчёт ожидаемых показателей для этого набора:
- полнота учёта:
(18 + 4 + 2) / 24 × 100% = 100%; - автоматическая успешная обработка:
18 / 24 × 100% = 75%; - ручная очередь:
4 / 24 × 100% = 16,7%; - изоляция:
2 / 24 × 100% = 8,3%.
Это ожидаемые результаты синтетического примера, а не измерения внедрения. При фактическом прогоне результат каждого вложения сравнивают с ожидаемым статусом. Расхождение записывают с причиной, исправляют правило или сценарий и повторяют затронутые проверки. Пилот не принят, если дубль создал вторую запись, одноимённый файл потерялся, новая версия затёрла прежнюю, сбой не появился в журнале или исключение осталось без причины.
Для рабочего проекта дополнительно согласуют платформу почты, форматы документов, права, целевую систему, правила повторов, ручные роли и критерии остановки. Обычная интеграция подходит, когда маршрут и решения заранее определены. OCR отвечает за распознавание, но не заменяет правила проверки. ИИ-агент нужен только там, где действительно требуется выбор действий в разрешённых границах; его не следует считать обязательной частью обработки вложений.
Switch On AI помогает описать такой процесс, подготовить требования, связать системы и задать проверку результата. На странице услуг по автоматизации можно выбрать подходящий формат работы. Начать можно с одного обезличенного письма и ожидаемого результата: обсудить свой процесс. До основной разработки бесплатный прототип показывает согласованный фрагмент сценария; он не равен полноценному внедрению.
Вопросы по этой задаче
Почему нельзя определять дубль только по имени вложения?
Разные письма могут содержать разные файлы с одинаковым именем, а изменённая версия может сохранить прежнее имя. Для решения нужны идентификаторы письма и вложения вместе с хешем содержимого.
Когда передача файла считается успешной?
Когда целевая система подтвердила операцию, а сценарий сохранил идентификатор созданной или обновлённой записи. Отправленный запрос без подтверждения ещё не означает успех.
Что делать с файлом, который система не смогла обработать?
Сохранить связь с исходным письмом, записать причину и присвоить явный статус: ручная очередь, изолирован или ожидает повтора. Файл не должен исчезать из учёта.
Обязательно ли использовать OCR или ИИ-агента?
Нет. OCR нужен для извлечения текста из сканов, а ИИ-агент — только для задач с выбором разрешённых действий. Получение, проверку и передачу структурированных вложений часто выполняет обычная интеграция.
Как проверить пилот обработки вложений?
Заранее подготовить обезличенный набор с обычными файлами, дублями, одноимёнными документами, изменённой версией и исключениями. Затем сопоставить судьбу каждого вложения с ожидаемым статусом и записью в журнале.
