При работе со встроенным почтовым клиентом в конфигурациях 1С (например, в УТ 10.3) часто возникает потребность в контроле получения отправленных электронных писем. Хотя типовой функционал не всегда содержит явных настроек для этого, мы можем программно расширить возможности отправки сообщений, добавив запросы на уведомления о доставке и прочтении.
Прежде чем приступать к доработке, важно осознать, что уведомления о доставке и прочтении — это не гарантия того, что письмо было прочитано. В протоколах SMTP/IMAP эти запросы являются лишь «пожеланием» отправителя. Почтовый клиент получателя может проигнорировать запрос или предложить пользователю самому подтвердить отправку ответа. Тем не менее, для многих бизнес-процессов этой реализации достаточно.
Для активации уведомлений необходимо внести изменения в общий модуль, отвечающий за отправку почты. В большинстве конфигураций на управляемых и обычных формах это модуль УправлениеЭлектроннойПочтой и процедура ПолучениеОтправкаПисем. Рассмотрим пошагово, как модифицировать код отправки.
Для того чтобы уведомления заработали, мы должны установить соответствующие свойства объекта ИнтернетПочтовоеСообщение перед вызовом метода Послать. Также необходимо добавить адреса отправителя в списки уведомлений.
Разберем пример модификации процедуры отправки:
// Внутри процедуры отправки почты находим место формирования сообщения
ПочтовоеСообщение = Новый ИнтернетПочтовоеСообщение;
// Устанавливаем признаки уведомлений
ПочтовоеСообщение.УведомитьОДоставке = Истина;
ПочтовоеСообщение.УведомитьОПрочтении = Истина;
// Добавляем адреса для обратных уведомлений
// Предполагается, что отправитель уже определен в переменной Письмо
АдресОтправителя = Письмо.ОтправительАдресЭлектроннойПочты;
ПочтовоеСообщение.АдресаУведомленияОДоставке.Добавить(АдресОтправителя);
ПочтовоеСообщение.АдресаУведомленияОПрочтении.Добавить(АдресОтправителя);
// Далее следует стандартный вызов метода отправки
Попытка
ИнтернетПочта.Послать(ПочтовоеСообщение);
Исключение
// Обработка ошибок
КонецПопытки;
Если вы хотите сделать решение гибким, рекомендуется добавить параметры УведомитьОДоставке и УведомитьОПрочтении в сигнатуру процедуры ПолучениеОтправкаПисем. Это позволит управлять уведомлениями для каждого письма индивидуально через интерфейс формы, если вы добавите соответствующие флажки на форму электронного письма.
Выполним следующие действия:
УправлениеЭлектроннойПочтой.ПолучениеОтправкаПисем добавьте параметры УведомитьОДоставке = Ложь и УведомитьОПрочтении = Ложь.ПочтовоеСообщение.АдресаУведомленияОДоставке и АдресаУведомленияОПрочтении. Если этого не сделать, уведомление может быть отправлено в «никуда» или не сформировано сервером.При использовании данного решения помните о следующих технических нюансах:
Если для ваших бизнес-задач почтовых уведомлений недостаточно, рассмотрите более современные способы контроля:
Подводя итог, настройка УведомитьОДоставке и УведомитьОПрочтении через ИнтернетПочтовоеСообщение — это простой и рабочий метод для внутренних коммуникаций компании. При правильной доработке кода вы сможете получать обратную связь по отправленным сообщениям, однако всегда учитывайте человеческий фактор и настройки безопасности почтовых серверов.