Каждый бухгалтер, менеджер или системный администратор рано или поздно сталкивается с необходимостью автоматизировать отправку документов клиентам. Согласитесь, гораздо удобнее отправить счет на оплату, акт сверки или накладную прямо из программы 1С в один клик, нежели сначала сохранять файл на жесткий диск, открывать браузер, заходить в почту и вручную прикреплять документ. В данной статье мы подробно разберем, как правильно настроить электронную почту в 1С, рассмотрим классические и современные методы конфигурации, а также проанализируем причины возникновения популярных ошибок SMTP 451 и SMTP 503.
Для начала рассмотрим, как настраивается электронная почта в более ранних конфигурациях 1С (например, Управление торговлей 10.3, Управление производственным предприятием 1.3 или Бухгалтерия предприятия 2.0). Если вы работаете в таком интерфейсе, алгоритм действий будет следующим:
smtp.mail.ru и pop.mail.ru соответственно. Обязательно введем имя пользователя (логин) и пароль. Помните, что логин должен содержать символ @ и полное имя домена (например, user@mail.ru), иначе сервер отклонит попытку авторизации.windows-1251 (Кириллица Windows) для старых систем или универсальную utf-8.После этого перейдем в справочник Контрагенты и на вкладке Контакты заполним поле E-mail для тех партнеров, которым планируется отправка документов. Теперь при формировании печатной формы «Счет на оплату» мы сможем нажать на иконку конверта в левом верхнем углу, выбрать формат вложения (например, XLS или PDF) и отправить письмо напрямую.
Мир веб-технологий не стоит на месте, и классические настройки, которые без проблем работали несколько лет назад, сегодня гарантированно приведут к ошибкам авторизации или блокировке отправки. Давайте проанализируем, почему это происходит и как настроить систему с учетом актуальных стандартов безопасности Яндекса, Mail.ru, Google и других крупных сервисов.
Переход с обычных паролей на «Пароли приложений». Главное изменение последних лет заключается в том, что почтовые провайдеры в целях безопасности запретили использовать основной пароль от вашего почтового ящика в сторонних программах (включая 1С). Даже если вы абсолютно уверены в правильности ввода своего пароля, 1С выдаст ошибку авторизации. Чтобы решить эту проблему, нам необходимо сгенерировать специальный пароль:
Шифрование SSL/TLS и новые порты. Ранее в настройках часто использовался стандартный порт SMTP 25 без шифрования. Сегодня большинство провайдеров интернета блокируют 25-й порт на сетевом уровне для борьбы со спамом, а сами почтовые серверы требуют обязательного безопасного соединения. Поэтому при настройке учетной записи необходимо:
Использование протокола IMAP предпочтительнее, поскольку он синхронизирует состояние писем между сервером и 1С. Письма не удаляются с сервера локально (как это часто происходило при настройках POP3 по умолчанию), а статус прочтения обновляется синхронно на всех устройствах.
Рассмотрим частую ошибку, с которой сталкиваются пользователи при первой настройке почты:
Ошибка при вызове метода контекста (Послать): Неизвестная ошибка (SMTP error code 503, Administrative prohibition -- authorization required. Users in your domain are not allowed to send email without authorization)
Выясним причину этого сбоя. Буквальный перевод сообщения об ошибке звучит так: «Административный запрет — требуется авторизация. Пользователям вашего домена запрещено отправлять почту без авторизации». Многие пользователи удивляются: «Но ведь при нажатии кнопки "Проверить подключение" программа пишет, что проверка выполнена успешно!»
Дело в том, что при проверке подключения 1С зачастую тестирует только протокол входящей почты (POP3 или IMAP) — то есть авторизуется для получения писем. А вот при попытке отправить письмо через SMTP-сервер авторизация не проходит. Для устранения этой ошибки выполним следующие действия:
Другая распространенная проблема выражается следующим сообщением:
Ошибка при вызове метода контекста (Послать): Локальная ошибка сервера (SMTP error code 451, 4.7.1 Requested action aborted: error in processing)
Или аналогичное сообщение:
SMTP error code 451 Temporary local problem - please try later
Давайте проанализируем природу этой ошибки. Код 451 указывает на то, что сервер получателя или ваш собственный SMTP-сервер временно отклонил запрос из-за локальных ограничений или временного сбоя обработки. Основные причины возникновения этой ошибки в современных реалиях:
Как же решить эту проблему в 1С?
Важный аспект, который упомянули участники обсуждения: при активном использовании встроенного почтового клиента 1С база данных начинает стремительно увеличиваться в объемах. Это происходит из-за того, что все отправленные и полученные письма вместе с прикрепленными файлами (тяжелыми PDF-сканами, Excel-таблицами, картинками из подписей) сохраняются непосредственно в СУБД (в файловую базу или таблицы SQL-сервера).
Рассмотрим, как решить эту проблему кардинально с помощью современных механизмов платформы 1С 8.3:
\\ServerFS\1C_Files). Теперь тело писем будет храниться в базе, а все тяжелые вложения автоматически запишутся на жесткий диск сервера, сохраняя размер базы данных компактным.ЭлектронноеПисьмоИсходящее:
ВыборкаПисем = Справочники.ЭлектронноеПисьмоИсходящее.Выбрать();
Пока ВыборкаПисем.Следующий() Цикл
Если ВыборкаПисем.Дата < ДобавитьМесяц(ТекущаяДата(), -12) Тогда
ОбъектПисьма = ВыборкаПисем.ПолучитьОбъект();
Попытка
ОбъектПисьма.Удалить();
Исключение
ЗаписьЖурналаРегистрации("ОчисткаПочты", УровеньЖурналаРегистрации.Ошибка,,, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецЕсли;
КонецЦикла;
Часто у начинающих пользователей возникает вопрос: «Как вложить файл Excel или PDF в электронное письмо напрямую из базы 1С без предварительного сохранения на рабочий стол компьютера?»
В современных конфигурациях 1С этот механизм полностью автоматизирован разработчиками. При нажатии кнопки отправки печатной формы по почте программа выполняет следующие действия «под капотом»:
ТабличныйДокумент.Записать().Давайте посмотрим на программный пример того, как можно реализовать отправку печатной формы документа по почте без вывода на экран промежуточных диалогов сохранения:
// Создаем табличный документ (например, печатную форму счета)
ТабДок = Новый ТабличныйДокумент;
// Здесь должен быть код заполнения табличного документа данными из ИБ
// ...
// Получаем путь во временный каталог для сохранения файла
ПутьКФайлу = КаталогВременныхФайлов() + "Счет_На_Оплату.pdf";
ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.PDF);
// Создаем новое письмо
Письмо = Новый ЭлектронноеПисьмо;
Письмо.Тема = "Счет на оплату от " + Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy");
Письмо.Тело = "Добрый день! Во вложении направляем счет на оплату.";
Письмо.Получатели.Добавить("client@email.com");
// Прикрепляем созданный временный файл
Вложение = Письмо.Вложения.Добавить(ПутьКФайлу);
Вложение.ИмяБезРасширения = "Счет_На_Оплату";
// Отправляем письмо через системную учетную запись
УчетнаяЗапись = Справочники.УчетныеЗаписиЭлектроннойПочты.НайтиПоНаименованию("Системная учетная запись");
Попытка
УправлениеЭлектроннойПочтой.ОтправитьПисьмо(УчетнаяЗапись, Письмо);
// Удаляем временный файл с диска после успешной отправки
УдалитьФайлы(ПутьКФайлу);
Исключение
ВызватьИсключение "Ошибка отправки письма: " + КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;
Если в старых конфигурациях настройки прятались глубоко в меню «Справочники», то в современных интерфейсах «Такси» путь значительно упростился. Для настройки системного почтового ящика выполним следующие шаги:
Таким образом, правильное понимание современных стандартов авторизации (использование паролей приложений вместо обычных), переход на шифрование SSL/TLS и протокол IMAP, а также использование томов для хранения файлов позволят вам создать стабильную, быструю и безопасную систему отправки документов напрямую из 1С без лишней ручной работы.