Как программно отправить электронное письмо в 1С:Управление торговлей 11?

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

При разработке внешних обработок и расширений для 1С:Управление торговлей (УТ 11) часто возникает необходимость отправки писем без участия пользователя. Рассмотрим основные способы реализации этой задачи: с помощью объекта платформы ИнтернетПочта и с использованием стандартных механизмов Библиотеки Стандартных Подсистем (БСП).

Способ 1. Использование объекта платформы "ИнтернетПочта"

Данный способ является универсальным для платформы 1С:Предприятие. Для отправки письма необходимо сформировать объект ИнтернетПочтовыйПрофиль, заполнить параметры SMTP-сервера и вызвать методы подключения и отправки.

Рассмотрим вариант с прямым указанием настроек почтового сервера в коде:


Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.yandex.ru";
Профиль.ПортSMTP = 465;
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.ПользовательSMTP = "user@yandex.ru";
Профиль.ПарольSMTP = "ПарольПриложения";
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;

Если параметры почты уже настроены в информационной базе, их можно загрузить из справочника УчетныеЗаписиЭлектроннойПочты:


Профиль = Новый ИнтернетПочтовыйПрофиль;
ОсновнаяПочта = Справочники.УчетныеЗаписиЭлектроннойПочты.НайтиПоНаименованию("info@company.ru");

Профиль.АдресСервераSMTP = ОсновнаяПочта.СерверИсходящейПочты;
Профиль.ПользовательSMTP = ОсновнаяПочта.ПользовательSMTP;
Профиль.ПарольSMTP = ОсновнаяПочта.ПарольSMTP;
Профиль.ПортSMTP = ОсновнаяПочта.ПортСервераИсходящейПочты;
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
Профиль.ИспользоватьSSLSMTP = Истина;

После формирования профиля выполняем подключение к серверу и отправку подготовленного объекта ИнтернетПочтовоеСообщение. Все сетевые операции обязательно оборачиваем в блок Попытка ... Исключение:


Почта = Новый ИнтернетПочта;

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

Способ 2. Отправка документа "ЭлектронноеПисьмоИсходящее" через подсистему "Взаимодействия"

В конфигурациях на БСП (включая УТ 11) предусмотрен типовой документ ЭлектронноеПисьмоИсходящее. Если письмо создается как объект базы данных, нет необходимости вручную настраивать объект ИнтернетПочта.

Проанализируем порядок действий:

  1. Создаем и полностью заполняем реквизиты документа ЭлектронноеПисьмоИсходящее (учетная запись, получатели, тема, текст письма и вложенные файлы).
  2. Записываем документ в информационную базу.
  3. Вызываем метод общего модуля: Взаимодействия.ВыполнитьОтправкуПисьма(ДокументОбъект).

Данная функция автоматически подключится к SMTP-серверу с использованием настроек учетной записи, указанной в документе, отправит письмо и переведет статус документа в состояние «Отправлено».

Способ 3. Отправка сообщений средствами БСП без создания документов

Для отправки служебных сообщений или уведомлений без сохранения документов в информационной базе используется общий модуль РаботаСПочтовымиСообщениями.

Разберем алгоритм отправки:

  1. Получаем ссылку на системную учетную запись вызовом функции РаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись().
  2. Формируем структуру ПараметрыПисьма с ключами Кому, Тема, Тело, ТипТекста и Вложения.
  3. Готовим сообщение с помощью метода РаботаСПочтовымиСообщениями.ПодготовитьПисьмо(УчетнаяЗапись, ПараметрыПисьма).
  4. Выполняем отправку вызовом РаботаСПочтовымиСообщениями.ОтправитьПисьмо(УчетнаяЗапись, Письмо).

Важные технические детали

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

  1. Контекст исполнения: Все вызовы отправки и работы с почтовыми объектами должны выполняться на стороне сервера (директива &НаСервере).
  2. Авторизация почтовых сервисов: При использовании сторонних почтовых сервисов (Яндекс, Mail.ru и др.) для отправки писем необходимо генерировать специальный «пароль для внешних приложений» в настройках безопасности почтового ящика, так как авторизация по обычному паролю блокируется серверами.
  3. Настройки безопасности SSL: Для серверов, требующих защищенное соединение, обязательно включайте флаг ИспользоватьSSLSMTP = Истина.
← На главную