Как реализовать отправку уведомлений о доставке и прочтении писем во встроенном почтовом клиенте 1С?

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

При работе со встроенным почтовым клиентом в конфигурациях 1С (например, в УТ 10.3) часто возникает потребность в контроле получения отправленных электронных писем. Хотя типовой функционал не всегда содержит явных настроек для этого, мы можем программно расширить возможности отправки сообщений, добавив запросы на уведомления о доставке и прочтении.

Понимание принципов работы уведомлений в 1С

Прежде чем приступать к доработке, важно осознать, что уведомления о доставке и прочтении — это не гарантия того, что письмо было прочитано. В протоколах SMTP/IMAP эти запросы являются лишь «пожеланием» отправителя. Почтовый клиент получателя может проигнорировать запрос или предложить пользователю самому подтвердить отправку ответа. Тем не менее, для многих бизнес-процессов этой реализации достаточно.

Реализация функционала в коде

Для активации уведомлений необходимо внести изменения в общий модуль, отвечающий за отправку почты. В большинстве конфигураций на управляемых и обычных формах это модуль УправлениеЭлектроннойПочтой и процедура ПолучениеОтправкаПисем. Рассмотрим пошагово, как модифицировать код отправки.

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

Разберем пример модификации процедуры отправки:


// Внутри процедуры отправки почты находим место формирования сообщения
ПочтовоеСообщение = Новый ИнтернетПочтовоеСообщение;

// Устанавливаем признаки уведомлений
ПочтовоеСообщение.УведомитьОДоставке = Истина;
ПочтовоеСообщение.УведомитьОПрочтении = Истина;

// Добавляем адреса для обратных уведомлений
// Предполагается, что отправитель уже определен в переменной Письмо
АдресОтправителя = Письмо.ОтправительАдресЭлектроннойПочты;
ПочтовоеСообщение.АдресаУведомленияОДоставке.Добавить(АдресОтправителя);
ПочтовоеСообщение.АдресаУведомленияОПрочтении.Добавить(АдресОтправителя);

// Далее следует стандартный вызов метода отправки
Попытка
    ИнтернетПочта.Послать(ПочтовоеСообщение);
Исключение
    // Обработка ошибок
КонецПопытки;

Детальный разбор доработки типовой процедуры

Если вы хотите сделать решение гибким, рекомендуется добавить параметры УведомитьОДоставке и УведомитьОПрочтении в сигнатуру процедуры ПолучениеОтправкаПисем. Это позволит управлять уведомлениями для каждого письма индивидуально через интерфейс формы, если вы добавите соответствующие флажки на форму электронного письма.

Выполним следующие действия:

  1. Откройте модуль УправлениеЭлектроннойПочтой.
  2. В процедуре ПолучениеОтправкаПисем добавьте параметры УведомитьОДоставке = Ложь и УведомитьОПрочтении = Ложь.
  3. Внутри цикла формирования сообщения для каждого письма присвойте эти значения объекту ПочтовоеСообщение.
  4. Обязательно добавьте адрес отправителя в коллекции АдресаУведомленияОДоставке и АдресаУведомленияОПрочтении. Если этого не сделать, уведомление может быть отправлено в «никуда» или не сформировано сервером.

Важные ограничения и рекомендации

При использовании данного решения помните о следующих технических нюансах:

Альтернативные подходы

Если для ваших бизнес-задач почтовых уведомлений недостаточно, рассмотрите более современные способы контроля:

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

Подводя итог, настройка УведомитьОДоставке и УведомитьОПрочтении через ИнтернетПочтовоеСообщение — это простой и рабочий метод для внутренних коммуникаций компании. При правильной доработке кода вы сможете получать обратную связь по отправленным сообщениям, однако всегда учитывайте человеческий фактор и настройки безопасности почтовых серверов.

← На главную