В процессе разработки в среде 1С часто возникает необходимость автоматизировать отправку уведомлений, отчетов или счетов пользователям или контрагентам. Для решения этой задачи в платформе предусмотрен мощный встроенный механизм работы с электронной почтой через протоколы SMTP и POP3/IMAP. Разберем подробно, как реализовать отправку письма, настроить параметры безопасности и прикрепить файлы программным способом, используя встроенные средства или готовое расширение для отправки и получения почтовых сообщений.
Прежде чем отправить письмо, нам необходимо подготовить "паспорт" нашего соединения — объект ИнтернетПочтовыйПрофиль. В этом объекте хранятся все технические данные сервера: адрес, порт, логин, пароль и параметры шифрования. Проанализируем, какие свойства являются обязательными для заполнения.
Рассмотрим пример функции, которая инициализирует профиль для работы с популярными почтовыми сервисами (например, Mail.ru, Gmail или корпоративный сервер Exchange). Важно помнить, что современные сервисы требуют обязательного использования защищенного соединения SSL.
Функция ПолучитьПочтовыйПрофиль()
Профиль = Новый ИнтернетПочтовыйПрофиль;
// Адрес SMTP сервера и порт (обычно 465 для SSL или 587 для TLS)
Профиль.АдресСервераSMTP = "smtp.mail.ru";
Профиль.ПортSMTP = 465;
// Учетные данные
Профиль.ПользовательSMTP = "robot@mail.ru";
Профиль.ПарольSMTP = "vash_parol_prilozheniya"; // Используйте пароль приложения, а не основной!
// Настройки безопасности
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.ТолькоЗащищеннаяАутентификацияSMTP = Ложь;
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоЛогину;
// Время ожидания сервера (в секундах)
Профиль.ВремяОжидания = 30;
Возврат Профиль;
КонецФункции
Обратите внимание: Большинство публичных сервисов (Google, Yandex, Mail.ru) требуют создания специального "пароля для внешних приложений" в настройках безопасности почтового ящика. Ообычный пароль от почты в коде 1С работать не будет из-за политик безопасности.
После подготовки профиля нам нужно создать само сообщение. Для этого используется объект ИнтернетПочтовоеСообщение. Выясним, какие поля необходимо заполнить, чтобы письмо успешно прошло спам-фильтры и дошло до адресата.
Разберем по шагам процесс наполнения объекта ИнтернетПочтовоеСообщение:
Получатели.Вложения.Посмотрим на программную реализацию создания сообщения, которая часто применяется, когда настраивается выставление счетов на оплату для клиентов:
Письмо = Новый ИнтернетПочтовоеСообщение;
Письмо.ИмяОтправителя = "Робот автоматизации 1С";
Письмо.Отправитель.Адрес = "robot@mail.ru";
// Добавляем получателя
НовыйПолучатель = Письмо.Получатели.Добавить("client@example.com");
НовыйПолучатель.ОтображаемоеИмя = "Уважаемый Клиент";
Письмо.Тема = "Счет на оплату №" + НомерДокумента;
// Формируем текст письма
Текст = Письмо.Тексты.Добавить();
Текст.Текст = "Добрый день! Во вложении ваш счет. Спасибо за сотрудничество.";
Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;
Часто целью отправки является передача файла, например, когда реализована автоматическая рассылка отчётов 1С в формате PDF. Для этого мы используем метод Добавить коллекции Вложения объекта почтового сообщения. Проанализируем, как правильно передать путь к файлу для автоматизации процесса.
Рассмотрим пример, где мы берем файл с диска и прикрепляем его к нашему письму:
ПутьКФайлу = "C:\Temp\Invoice_123.pdf";
ФайлВложения = Новый Файл(ПутьКФайлу);
Если ФайлВложения.Существует() Тогда
Письмо.Вложения.Добавить(ПутьКФайлу, "Счет_на_оплату.pdf");
Иначе
Сообщить("Файл для вложения не найден!");
КонецЕсли;
Важный момент: Если вы формируете файл программно (например, из ТабличныйДокумент), сначала сохраните его во временное хранилище или на диск методом Записать(), а только потом добавляйте во вложение.
Заключительный этап — само действие по отправке. Для этого используется объект ИнтернетПочта. Весь процесс отправки обязательно нужно помещать в блок Попытка...Исключение, так как проблемы с интернет-соединением, блокировки портов антивирусом или неверные пароли могут вызвать аварийное завершение программы.
Проанализируем алгоритм отправки:
ИнтернетПочта.ИнтернетПочтовыйПрофиль.Отправить, передавая сформированное письмо.Отключиться, чтобы не оставлять активных сессий.
Почта = Новый ИнтернетПочта;
Попытка
Почта.Подключиться(ПолучитьПочтовыйПрофиль());
Почта.Отправить(Письмо);
Сообщить("Письмо успешно отправлено!");
Исключение
Сообщить("Произошла ошибка при отправке: " + ОписаниеОшибки());
КонецПопытки;
Почта.Отключиться();
При работе с почтой на платформе 1С 8.3 следует учитывать архитектурные особенности:
ВремяОжидания в профиле до 60-120 секунд.ИнтернетПочтовыйПрофиль.Мы подробно разобрали универсальный механизм отправки почты. Используя приведенные примеры кода, вы сможете внедрить автоматическую рассылку в любую конфигурацию 1С, будь то 1C:Бухгалтерия, 1С:Управление торговлей или самописное решение на базе БСП.