Как программно отправить электронное письмо из 1С 8.3 с вложением?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе разработки в среде 1С часто возникает необходимость автоматизировать отправку уведомлений, отчетов или счетов пользователям или контрагентам. Для решения этой задачи в платформе предусмотрен мощный встроенный механизм работы с электронной почтой через протоколы SMTP и POP3/IMAP. Разберем подробно, как реализовать отправку письма, настроить параметры безопасности и прикрепить файлы программным способом, используя встроенные средства или готовое расширение для отправки и получения почтовых сообщений.

Шаг 1. Создание и настройка почтового профиля

Прежде чем отправить письмо, нам необходимо подготовить "паспорт" нашего соединения — объект ИнтернетПочтовыйПрофиль. В этом объекте хранятся все технические данные сервера: адрес, порт, логин, пароль и параметры шифрования. Проанализируем, какие свойства являются обязательными для заполнения.

Рассмотрим пример функции, которая инициализирует профиль для работы с популярными почтовыми сервисами (например, 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С работать не будет из-за политик безопасности.

Шаг 2. Формирование электронного письма

После подготовки профиля нам нужно создать само сообщение. Для этого используется объект ИнтернетПочтовоеСообщение. Выясним, какие поля необходимо заполнить, чтобы письмо успешно прошло спам-фильтры и дошло до адресата.

Разберем по шагам процесс наполнения объекта ИнтернетПочтовоеСообщение:

  1. Укажем отправителя. Важно, чтобы адрес отправителя совпадал с логином в профиле.
  2. Добавим получателей. В 1С их может быть несколько, они хранятся в коллекции Получатели.
  3. Сформулируем тему и текст письма. Текст может быть как обычным, так и в формате HTML.
  4. При необходимости добавим вложения через объект Вложения.

Посмотрим на программную реализацию создания сообщения, которая часто применяется, когда настраивается выставление счетов на оплату для клиентов:


Письмо = Новый ИнтернетПочтовоеСообщение;
Письмо.ИмяОтправителя = "Робот автоматизации 1С";
Письмо.Отправитель.Адрес = "robot@mail.ru";

// Добавляем получателя
НовыйПолучатель = Письмо.Получатели.Добавить("client@example.com");
НовыйПолучатель.ОтображаемоеИмя = "Уважаемый Клиент";

Письмо.Тема = "Счет на оплату №" + НомерДокумента;

// Формируем текст письма
Текст = Письмо.Тексты.Добавить();
Текст.Текст = "Добрый день! Во вложении ваш счет. Спасибо за сотрудничество.";
Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;

Шаг 3. Работа с вложениями

Часто целью отправки является передача файла, например, когда реализована автоматическая рассылка отчётов 1С в формате PDF. Для этого мы используем метод Добавить коллекции Вложения объекта почтового сообщения. Проанализируем, как правильно передать путь к файлу для автоматизации процесса.

Рассмотрим пример, где мы берем файл с диска и прикрепляем его к нашему письму:


ПутьКФайлу = "C:\Temp\Invoice_123.pdf";
ФайлВложения = Новый Файл(ПутьКФайлу);

Если ФайлВложения.Существует() Тогда
    Письмо.Вложения.Добавить(ПутьКФайлу, "Счет_на_оплату.pdf");
Иначе
    Сообщить("Файл для вложения не найден!");
КонецЕсли;

Важный момент: Если вы формируете файл программно (например, из ТабличныйДокумент), сначала сохраните его во временное хранилище или на диск методом Записать(), а только потом добавляйте во вложение.

Шаг 4. Отправка сообщения и обработка исключений

Заключительный этап — само действие по отправке. Для этого используется объект ИнтернетПочта. Весь процесс отправки обязательно нужно помещать в блок Попытка...Исключение, так как проблемы с интернет-соединением, блокировки портов антивирусом или неверные пароли могут вызвать аварийное завершение программы.

Проанализируем алгоритм отправки:

  1. Создаем экземпляр объекта ИнтернетПочта.
  2. Подключаемся к серверу, передавая наш настроенный ИнтернетПочтовыйПрофиль.
  3. Вызываем метод Отправить, передавая сформированное письмо.
  4. Обязательно отключаемся от сервера методом Отключиться, чтобы не оставлять активных сессий.

Почта = Новый ИнтернетПочта;
Попытка
    Почта.Подключиться(ПолучитьПочтовыйПрофиль());
    Почта.Отправить(Письмо);
    Сообщить("Письмо успешно отправлено!");
Исключение
    Сообщить("Произошла ошибка при отправке: " + ОписаниеОшибки());
КонецПопытки;
Почта.Отключиться();

Дополнительные рекомендации

При работе с почтой на платформе 1С 8.3 следует учитывать архитектурные особенности:

Мы подробно разобрали универсальный механизм отправки почты. Используя приведенные примеры кода, вы сможете внедрить автоматическую рассылку в любую конфигурацию 1С, будь то 1C:Бухгалтерия, 1С:Управление торговлей или самописное решение на базе БСП.

← На главную