Большой скан может быть меньше лимита загрузки самого принтера, но больше допустимого письма исходящего сервиса. Пересылка снова не меняет размер вложения; нужен отдельный маршрут для файла.
В сентябрьской работе KMVSG добавил выгрузку крупных сканов в Shared Drive и отправку небольшого письма со ссылкой. Разберём, что было проверено и как учитывались отказы.
Файлы и корпоративная почта
Крупные сканы без тяжёлого письма
- 01Скан
- 02Хранилище
- 03Ссылка
- 04Очередь
- Скан сохраняется в согласованную структуру облачного диска, размер исходного письма учитывается отдельно.
- Ссылку и разрешение открыть файл проверяем раздельно. Публичный доступ не включаем автоматически.
- Ошибка загрузки или доставки остаётся наблюдаемой. Письмо без файла и без ссылки не отправляется.
Проверяйте размер всего письма
Файл и MIME-письмо имеют разные размеры. Порог выгрузки выбирайте по ограничениям исходящего сервиса с запасом, а не по одному размеру PDF. Текущие квоты проверяются в документации и конкретном облаке.
В кейсе выгрузка включалась, если итоговое письмо превышало 9 000 000 байт. Меньшие письма отправлялись обычным способом. Этот порог — настройка проверенного маршрута, а не общий предел для любых почтовых систем.
Согласуйте хранение и доступ до запуска
Структура по получателю и дате помогает найти скан после доставки. Нужны также право получателя открыть файл и правила выдачи доступа. Наличие прямой ссылки не означает публичную публикацию.
В нашем внедрении файл помещался в Shared Drive; имя включало часть контрольной суммы. Права наследовались от диска, общедоступное разрешение не создавалось. Для другого состава получателей модель доступа проверяется отдельно.
Повтор обработки не должен создавать лишние файлы
Сеть может оборваться между загрузкой файла и передачей письма. Сохраните контрольную сумму и состояние, а параллельную обработку одного вложения ограничьте блокировкой. Журнал должен помогать продолжить шаг, а не угадывать, было ли сохранение.
Изолированная проверка дважды обработала один PDF; в целевом каталоге появился ровно один файл с ожидаемой контрольной суммой. Это подтверждение сценария повтора в данном фильтре, а не глобальное удаление похожих документов.
Проверяйте обе ветки на реальных сканах
Малый скан подтверждает обычную отправку; большой — полный путь через облако и замену вложения ссылкой. Отдельно фиксируйте ответ исходящего сервиса и получение адресатом.
28 сентября получено большое письмо на 13 807 374 байта. PDF на 10 074 931 байт сохранён в Drive, письмо после замены вложения составило 1391 байт и было принято Postbox. Очередь пуста. Малый скан в тот же день дошёл адресату обычным вложением; получение большого письма отдельно не утверждается.
Ошибки загрузки и SMTP требуют разных проверок
Если файл не удалось загрузить, нельзя отправлять пустое уведомление без вложения и ссылки. В кейсе такая ошибка возвращалась как временная, сохраняя письмо для повтора. Отказ исходящего сервиса также должен оставаться видимым в очереди.
12 октября relay принимал сканы, но Postbox не отвечал по TCP. Исходники сохранялись в очереди, два PDF по запросу выгружены с совпадением SHA-256. Восстановление доставки тогда не подтверждено; успешная сентябрьская выгрузка не закрывает этот поздний инцидент.
Определите предел ожидания
Срок жизни очереди, доступное место и порядок действий при длительном отказе задаются заранее. В проверенном октябрьском состоянии срок хранения составлял сутки; ожидание не было бессрочным.
Приёмка услуги включает наблюдаемый путь файла и письма, проверку прав и повтора, а также инструкцию по очереди. Квота Postbox и постоянная доступность облаков не обещаются результатом настройки. Любое изменение квоты проверяется отдельно.
Короткий чек-лист
- Измерить всё MIME-письмо
- Выбрать порог с запасом
- Согласовать диск и права получателя
- Проверить повтор обработки файла
- Протестировать малый и большой сканы
- Задать срок очереди и действия при отказе
Ссылки и исходный код
В материале раскрыты запросы: Крупные сканы в облачный архив с отправкой ссылок, Файлы и корпоративная почта, Сканы в облачный архив.