При работе с почтовым функционалом в 1С:Предприятие пользователи часто сталкиваются с ситуацией, когда отправка писем внезапно прекращается. Одной из самых коварных ошибок является сообщение: «Превышение выделенного дискового пространства (SMTP error code 552 Message size exceeds maximum permitted)». Коварство заключается в том, что русскоязычный текст ошибки в интерфейсе 1С часто вводит в заблуждение, заставляя администраторов проверять свободное место на жестких дисках сервера или объем почтового ящика, в то время как истинная причина кроется в другом. Рассмотрим подробнее, как диагностировать и устранить эту проблему.
Проанализируем текст ошибки, который выдает система. Фраза Message size exceeds maximum permitted на английском языке однозначно указывает на то, что размер сообщения превышает максимально допустимый предел. В то же время перевод платформы 1С говорит о «дисковом пространстве». Это классический пример неточности локализации: почтовый сервер возвращает код 552, который 1С интерпретирует как нехватку места, хотя сервер имеет в виду именно объем конкретного письма вместе со всеми вложениями.
Разберем ситуацию: на почтовом сервере (например, Exchange, Postfix или в настройках почтового сервиса типа Mail.ru/Yandex) установлено ограничение на размер одного исходящего письма (например, 20 МБ). Если вы пытаетесь отправить из 1С тяжелый отчет или пачку сканов, суммарный объем которых превышает этот лимит, сервер обрывает соединение и возвращает ошибку 552.
Рассмотрим важный технический нюанс, о котором часто забывают. При передаче файлов через протокол SMTP используется кодирование Base64. Проанализируем, как это влияет на размер:
Для начала проанализируем, на каком этапе происходит сбой. В тексте ошибки из 1С мы видим обращение к методу Соединение.Послать(Письмо). Это означает, что соединение с сервером установлено успешно, авторизация пройдена, но в момент передачи данных сервер «отказал» программе.
Если вы используете корпоративный сервер (например, MS Exchange), необходимо обратиться к системному администратору. Проверьте настройки в следующих местах:
Если 1С работает через Yandex, Mail.ru или Gmail, помните, что у них есть жесткие лимиты (обычно от 20 до 25 МБ на письмо). Посмотрим на ситуацию: если ваше вложение превышает этот объем после кодирования, вы никак не сможете отправить его через SMTP напрямую. В этом случае следует либо уменьшать объем вложения, либо использовать альтернативные методы передачи.
Иногда ограничение стоит не на самом почтовом сервере, а на антивирусном шлюзе или Firewall, который проверяет исходящий трафик. Проанализируем логи сетевого оборудования, если увеличение лимитов на почтовом сервере не принесло результата.
Если увеличить лимит на сервере невозможно, рассмотрим программные способы решения проблемы в коде 1С. Посмотрим на пример логики, которую можно реализовать:
// Пример проверки размера вложения перед отправкой
ФайлВложения = Новый Файл(ПутьКФайлу);
РазмерВБайтах = ФайлВложения.Размер();
МаксимальныйРазмер = 15 * 1024 * 1024; // 15 МБ (с учетом запаса на Base64)
Если РазмерВБайтах > МаксимальныйРазмер Тогда
Сообщить("Файл слишком большой для отправки почтой! Рекомендуется использовать облачное хранилище.");
Иначе
// Код отправки через Послать()
КонецЕсли;
Для работы с почтой в типовых конфигурациях на базе БСП (Библиотека стандартных подсистем) используются вызовы через общие модули. Обратите внимание на функции в РаботаСПочтовымиСообщениями. Если вы вносите изменения в конфигурацию, рекомендуется внедрить проверку размера всех файлов в массиве Вложения перед вызовом метода Соединение.Послать().
Проанализировав опыт решения подобных проблем, можно выделить несколько эффективных стратегий:
ИнтернетПочтовоеСообщение.temp на сервере 1С, где формируется тело письма перед отправкой. Очистите временные файлы сервера 1С.Таким образом, столкнувшись с ошибкой 552, не спешите расширять дисковые квоты. Главное решение — это приведение размера отправляемого сообщения в соответствие с лимитами почтового сервера или расширение этих лимитов в настройках SMTP-службы.