Собственно используется встроенный почтовый клиент, но есть необходимость понимать получил человек письмо или нет, как это можно сделать?
---
только сейчас заметил весёлый ответ о прочтении по умолчанию:
"Сообщение, отправленное *********, было открыто. Это не означает, что сообщение было прочитано или понято."
---
SinglCOOLer,

какая конфа?
я почтовых клиентов на 1с штук 5 разных видел.
---
ИМХО, бесполезная штука - очень много зависит от клиента(почтовой программы) и пользователя.
Я вот никогда не отправляю подтверждение о доставке
---
УТ 10.3 на 8.1
---
SinglCOOLer,
Поиск по свойству УведомитьОДоставке в УТ 10.3.21.1 ничего не дал,
следовательно данный функционал в УТ 10.3 отсутствует.
Только дорабатывать.
---
Да можно и доработать, понять бы а какую сторону копать, интересно как в 11 УТ сделано
---
SinglCOOLer, понять бы а какую сторону копать

Общий модуль УправлениеЭлектроннойПочтой
Процедура ПолучениеОтправкаПисем(****) Экспорт

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

Это если примитивно, для всех писем, при условии что на стороне получателя данный функционал поддерживается и включён.
---
KroVladS, сделал так, ничего не приходит, пробовал разные ящики, читал почту с веб клиента яндекса и меила, уведомления не приходили, пичаль.

п.с.

адрес получателя уведомления добавлял
---
KroVladS, но опять же странность, отправил с маила на яндекс с галкой уведомление о прочтении и никакого уведомления на меил не вернулось
---
SinglCOOLer,
при условии что на стороне получателя данный функционал поддерживается и включён.
у меня в почтовом клиенте (не 1с) есть настройка:

```1c
    Подтверждение прочтения: Никогда не отправлять подтверждение прочтения
```

популярные почтовые сервера майл и яндекс принудительно отключают уведомление о доставке, чтобы спамеры не проверяли доступные адреса.
---
SinglCOOLer,

Добавил перед попыткой

```1c
    *************************
    ПочтовоеСообщение.УведомитьОДоставке = Истина;
    ПочтовоеСообщение.УведомитьОПрочтении = Истина;

    ПочтовоеСообщение.АдресаУведомленияОДоставке.Добавить(ПочтовоеСообщение.Отправитель.Адрес);
    ПочтовоеСообщение.АдресаУведомленияОПрочтении.Добавить(ПочтовоеСообщение.Отправитель.Адрес);

    Попытка

    ИнтернетПочта.Послать(ПочтовоеСообщение);
    Если (Письма <> Неопределено) И (Письма.Получить(Письмо) <> Неопределено) Тогда
    **********************
```

на внутреннем почтовом сервере подтверждение о прочтении приходит (Если его включить в почтовом клиенте (не 1с))
---
KroVladS, спасибо, сделал так, заказчик хочет именно так, чтобы отчет был )
---
SinglCOOLer, KroVladS, а можно пример обработки или кода ?! как получить отчет как на картинке подтверждение ?!
---
kare, тут скорее всего речь идет о том что получено обратное сообщение, что письмо дошло и его открыли. Вот и обратное письмо и есть отчет. Кстати спасибо автору. Сегодня юзеры захотели точно такую же фишку.
---
Xershi, можете поделиться кодом который использовали для этой задачи?

Спасибо!
---
подробности не помню. Но добавил на форму электронного письма 2 галки.
И расширил типовую процедуру:

```1c
    // Процедура осуществляет транспорт писем
    //
    // Параметры
    // СоответствиеТекстовЭлектронныхПисем - Соответствие, текстов писем и ДокументСсылка.ЭлектронноеПисьмо
    // ТекущийПользователь - СправочникСсылка.Пользователи, Текущий пользователь системы
    // МассивУчетныхЗаписей - Массив, учетные записи по которым необходимо осуществить транспорт
    // МассивПисем - Массив, документы ЭлектронноеПисьмо, которые необходимо отправить
    // Отправить - Булево, действие "отправить письма"
    // Получить - Булево, действие "получить письма"
    // ПоказыватьОкноВыполнения - Булево, показывать окно выполнения получения/отправки писем
    // УведомитьОДоставке - Булево, почтовый сервер получателя при получении письма может ответить письмом о доставке (Важно! Работает не везде)
    // УведомитьОПрочтении - Булево, получатель может оповестить отправителя о прочтении письма (Важно! Работает не везде)
    //
    // Возвращаемое значение:
    // НЕТ
    //
    Процедура ПолучениеОтправкаПисем(СоответствиеТекстовЭлектронныхПисем, ТекущийПользователь, МассивУчетныхЗаписей = Неопределено,
    Письма = Неопределено, Отправить = Ложь, Получить = Ложь, ПоказыватьОкноВыполнения = Истина, ТекстОшибок = ",
    УведомитьОДоставке = Ложь, УведомитьОПрочтении = Ложь) Экспорт

    Перем мРазделительАдресов;

    Если НЕ Константы.ИспользованиеВстроенногоПочтовогоКлиента.Получить() Тогда
    Сообщить("В настройках учета не установлено использование встроенного почтового клиента. Действие отправка/получение писем не выполнено.");
    Отказ = Истина;
    Возврат;
    КонецЕсли;

    мРазделительАдресов = ",";

    СписокДоступныхУчетныхЗаписей = ПолучитьДоступныеУчетныеЗаписи(ТекущийПользователь).Запись;

    ТекстОшибок = ";

    Если ТипЗнч(Письма) = Тип("Соответствие") Тогда
    МассивПисем = Новый Массив;
    Для каждого ЭлементСоотсетствия Из Письма Цикл
    МассивПисем.Добавить(ЭлементСоотсетствия.Ключ);
    КонецЦикла;
    КонецЕсли;

    // Получим сответствие всех учетных записей, по которым надо производить действия отправки и получения
    СоответствиеУчетныхЗаписейВсего = Новый Соответствие;

    Если Отправить Тогда

    Запрос = Новый Запрос;

    // Дерево на отправку
    Если Письма = Неопределено И МассивУчетныхЗаписей = Неопределено Тогда

    Запрос.УстановитьПараметр("Исходящее", Перечисления.СтатусыПисем.Исходящее);
    Запрос.УстановитьПараметр("СписокВладельцев", СписокДоступныхУчетныхЗаписей);

    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | ЭлектронноеПисьмо.УчетнаяЗапись КАК УчетнаяЗапись,
    | ЭлектронноеПисьмо.Ссылка КАК Письмо
    |ИЗ
    | Документ.ЭлектронноеПисьмо КАК ЭлектронноеПисьмо
    |ГДЕ
    | ЭлектронноеПисьмо.СтатусПисьма = &Исходящее
    | И ЭлектронноеПисьмо.УчетнаяЗапись В(&СписокВладельцев)
    | И Не ЭлектронноеПисьмо.ПометкаУдаления
    |ИТОГИ ПО
    | УчетнаяЗапись";

    ДеревоУчетныхЗаписейИПисем = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);

    ИначеЕсли ТипЗнч(МассивПисем) = Тип("Массив") И МассивУчетныхЗаписей = Неопределено Тогда

    Запрос.УстановитьПараметр("Исходящее" , Перечисления.СтатусыПисем.Исходящее);
    Запрос.УстановитьПараметр("СписокВладельцев", СписокДоступныхУчетныхЗаписей);
    Запрос.УстановитьПараметр("СписокПисем" , МассивПисем);

    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | ЭлектронноеПисьмо.УчетнаяЗапись КАК УчетнаяЗапись,
    | ЭлектронноеПисьмо.Ссылка КАК Письмо
    |ИЗ
    | Документ.ЭлектронноеПисьмо КАК ЭлектронноеПисьмо
    |ГДЕ
    | ЭлектронноеПисьмо.СтатусПисьма = &Исходящее
    | И ЭлектронноеПисьмо.Ссылка В(&СписокПисем)
    | И ЭлектронноеПисьмо.УчетнаяЗапись В(&СписокВладельцев)
    |ИТОГИ ПО
    | УчетнаяЗапись";

    ДеревоУчетныхЗаписейИПисем = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);

    ИначеЕсли МассивПисем = Неопределено И ТипЗнч(МассивУчетныхЗаписей) = Тип("Массив") Тогда

    Запрос.УстановитьПараметр("Исходящее", Перечисления.СтатусыПисем.Исходящее);
    Запрос.УстановитьПараметр("СписокВладельцев", СписокДоступныхУчетныхЗаписей);
    Запрос.УстановитьПараметр("СписокВладельцевМассив", МассивУчетныхЗаписей);

    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | ЭлектронноеПисьмо.УчетнаяЗапись КАК УчетнаяЗапись,
    | ЭлектронноеПисьмо.Ссылка КАК Письмо
    |ИЗ
    | Документ.ЭлектронноеПисьмо КАК ЭлектронноеПисьмо
    |ГДЕ
    | ЭлектронноеПисьмо.СтатусПисьма = &Исходящее
    | И ЭлектронноеПисьмо.УчетнаяЗапись В(&СписокВладельцевМассив)
    | И ЭлектронноеПисьмо.УчетнаяЗапись В(&СписокВладельцев)
    | И Не ЭлектронноеПисьмо.ПометкаУдаления
    |ИТОГИ ПО
    | УчетнаяЗапись";

    ДеревоУчетныхЗаписейИПисем = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);

    ИначеЕсли ТипЗнч(МассивПисем) = Тип("Массив") И ТипЗнч(МассивУчетныхЗаписей) = Тип("Массив") Тогда

    Запрос.УстановитьПараметр("Исходящее" , Перечисления.СтатусыПисем.Исходящее);
    Запрос.УстановитьПараметр("СписокПисем" , МассивПисем);
    Запрос.УстановитьПараметр("СписокВладельцев" , СписокДоступныхУчетныхЗаписей);
    Запрос.УстановитьПараметр("СписокВладельцевМассив", МассивУчетныхЗаписей);

    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | ЭлектронноеПисьмо.УчетнаяЗапись КАК УчетнаяЗапись,
    | ЭлектронноеПисьмо.Ссылка КАК Письмо
    |ИЗ
    | Документ.ЭлектронноеПисьмо КАК ЭлектронноеПисьмо
    |ГДЕ
    | ЭлектронноеПисьмо.СтатусПисьма = &Исходящее
    | И ЭлектронноеПисьмо.Ссылка В(&СписокПисем)
    | И ЭлектронноеПисьмо.УчетнаяЗапись В(&СписокВладельцевМассив)
    | И ЭлектронноеПисьмо.УчетнаяЗапись В(&СписокВладельцев)
    |ИТОГИ ПО
    | УчетнаяЗапись";

    ДеревоУчетныхЗаписейИПисем = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);

    Иначе
    Возврат;
    КонецЕсли;

    МассивУчетныхЗаписейОтправка = ДеревоУчетныхЗаписейИПисем.Строки.ВыгрузитьКолонку("УчетнаяЗапись");
    Для каждого ЭлементМассива Из МассивУчетныхЗаписейОтправка Цикл
    СоответствиеУчетныхЗаписейВсего.Вставить(ЭлементМассива, ЭлементМассива);
    КонецЦикла;

    КонецЕсли;

    Если Получить Тогда

    // Заполним массив учетных записей на получение писем
    Если ТипЗнч(МассивУчетныхЗаписей) = Тип("Массив") Тогда

    Запрос = Новый Запрос;

    Запрос.УстановитьПараметр("СписокВладельцев", СписокДоступныхУчетныхЗаписей);
    Запрос.УстановитьПараметр("СписокВладельцевМассив", МассивУчетныхЗаписей);

    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | УчетныеЗаписиЭлектроннойПочты.Ссылка КАК УчетнаяЗапись
    |ИЗ
    | Справочник.УчетныеЗаписиЭлектроннойПочты КАК УчетныеЗаписиЭлектроннойПочты
    |ГДЕ
    | УчетныеЗаписиЭлектроннойПочты.Ссылка В(&СписокВладельцевМассив)
    | И УчетныеЗаписиЭлектроннойПочты.Ссылка В(&СписокВладельцев)";

    МассивУчетныхЗаписейПолучение = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("УчетнаяЗапись");

    ИначеЕсли МассивУчетныхЗаписей = Неопределено Тогда
    МассивУчетныхЗаписейПолучение = СписокДоступныхУчетныхЗаписей.ВыгрузитьЗначения();
    Иначе
    Возврат;
    КонецЕсли;

    Для каждого ЭлементМассива Из МассивУчетныхЗаписейПолучение Цикл
    СоответствиеУчетныхЗаписейВсего.Вставить(ЭлементМассива, ЭлементМассива);
    КонецЦикла;

    КонецЕсли;

    // Определим те учетные записи, которые были заявлены во входящих параметрах
    // и проверим их на возможность отправки, что бы пользователю было понятно
    // почему некоторые письма не отправились

    СоответствиеЗаявленныхУчетныхЗаписей = Новый Соответствие;

    Если ТипЗнч(МассивПисем) = Тип("Массив") Тогда

    Запрос = Новый Запрос;

    Запрос.УстановитьПараметр("Исходящее" , Перечисления.СтатусыПисем.Исходящее);
    Запрос.УстановитьПараметр("СписокПисем" , МассивПисем);
    Запрос.УстановитьПараметр("СписокВладельцев" , СписокДоступныхУчетныхЗаписей);
    Запрос.УстановитьПараметр("СписокВладельцевМассив", МассивУчетныхЗаписей);

    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    | ЭлектронноеПисьмо.УчетнаяЗапись КАК УчетнаяЗапись
    |ИЗ
    | Документ.ЭлектронноеПисьмо КАК ЭлектронноеПисьмо
    |ГДЕ
    | ЭлектронноеПисьмо.Ссылка В(&СписокПисем)";

    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
    СоответствиеЗаявленныхУчетныхЗаписей.Вставить(Выборка.УчетнаяЗапись, Выборка.УчетнаяЗапись);
    КонецЦикла;

    КонецЕсли;

    Если ТипЗнч(МассивУчетныхЗаписей) = Тип("Массив") Тогда
    Для каждого ЭлементМассива Из МассивУчетныхЗаписей Цикл
    СоответствиеЗаявленныхУчетныхЗаписей.Вставить(ЭлементМассива, ЭлементМассива);
    КонецЦикла;
    КонецЕсли;

    #Если Клиент Тогда
    // Пора показывать форму состояния отпарвки/получения
    ФормаПрогрессора = ПолучитьОбщуюФорму("ФормаИндикацииПроцессаПолученияОтправкиПисемЭлектроннойПочт­ы",,"УникальнаяФорма");
    ФормаПрогрессора.Задачи.Индексы.Добавить("Объект");
    ФормаПрогрессора.Задачи.Очистить();

    Если ПоказыватьОкноВыполнения Тогда
    // Выведем те учетные записи, которые не прошли по заявленным
    Для каждого ЭлементСоответствия Из СоответствиеЗаявленныхУчетныхЗаписей Цикл

    Если СписокДоступныхУчетныхЗаписей.НайтиПоЗначению(ЭлементСоответствия.Ключ) = Неопределено Тогда

    ТекстОшибок = Символы.ПС + ТекстОшибок + ("Заявлена " + ЭлементСоответствия.Значение.Наименование + " <" + ЭлементСоответствия.Значение.АдресЭлектроннойПочты + ">" + " - нет прав доступа для записи электронных писем.");

    НоваяЗадача = ФормаПрогрессора.Задачи.Добавить();
    НоваяЗадача.Объект = ЭлементСоответствия.Ключ;
    НоваяЗадача.Состояние = Перечисления.СостоянияСобытий.Отменено;
    Если Отправить И Получить Тогда
    НоваяЗадача.Задача = "Отправка и получение";
    ИначеЕсли Отправить Тогда
    НоваяЗадача.Задача = "Отправка";
    ИначеЕсли Получить Тогда
    НоваяЗадача.Задача = "Получение";
    КонецЕсли;

    Продолжить;

    КонецЕсли;

    Если СоответствиеУчетныхЗаписейВсего.Получить(ЭлементСоответствия.Ключ) = Неопределено Тогда
    НоваяЗадача = ФормаПрогрессора.Задачи.Добавить();
    НоваяЗадача.Объект = ЭлементСоответствия.Ключ;
    НоваяЗадача.Состояние = Перечисления.СостоянияСобытий.Завершено;
    Если Отправить И Получить Тогда
    НоваяЗадача.Задача = "Отправка и получение";
    ИначеЕсли Отправить Тогда
    НоваяЗадача.Задача = "Отправка";
    ИначеЕсли Получить Тогда
    НоваяЗадача.Задача = "Получение";
    КонецЕсли;
    КонецЕсли;

    КонецЦикла;

    // Покажем в таблице значений учетные записи, по которым нет писем, но они должны обрабатываться, как обработанные
    Если МассивУчетныхЗаписей = Неопределено Тогда
    Для каждого ЭлементСписка Из СписокДоступныхУчетныхЗаписей Цикл
    Если СоответствиеУчетныхЗаписейВсего.Получить(ЭлементСписка.Значение) = Неопределено И ФормаПрогрессора.Задачи.Найти(ЭлементСписка.Значение, "Объект") = Неопределено Тогда
    НоваяЗадача = ФормаПрогрессора.Задачи.Добавить();
    НоваяЗадача.Объект = ЭлементСписка.Значение;
    НоваяЗадача.Состояние = Перечисления.СостоянияСобытий.Завершено;
    Если Отправить И Получить Тогда
    НоваяЗадача.Задача = "Отправка и получение";
    ИначеЕсли Отправить Тогда
    НоваяЗадача.Задача = "Отправка";
    ИначеЕсли Получить Тогда
    НоваяЗадача.Задача = "Получение";
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;

    КонецЕсли;

    ФормаПрогрессора.Ошибки = ";
    ФормаПрогрессора.КомментарийОбработкиДанных = "Получение и отправка писем электронной почты";

    #КонецЕсли

    Если СоответствиеУчетныхЗаписейВсего.Количество() > 0 Тогда

    #Если Клиент Тогда
    Если ПоказыватьОкноВыполнения Тогда

    Для каждого ЭлементСоответствия Из СоответствиеУчетныхЗаписейВсего Цикл
    НоваяЗадача = ФормаПрогрессора.Задачи.Добавить();
    НоваяЗадача.Объект = ЭлементСоответствия.Ключ;
    НоваяЗадача.Состояние = Перечисления.СостоянияСобытий.Запланировано;
    Если Отправить И Получить Тогда
    НоваяЗадача.Задача = "Отправка и получение";
    ИначеЕсли Отправить Тогда
    НоваяЗадача.Задача = "Отправка";
    ИначеЕсли Получить Тогда
    НоваяЗадача.Задача = "Получение";
    КонецЕсли;
    КонецЦикла;

    ФормаПрогрессора.Открыть();

    КонецЕсли;
    #КонецЕсли

    Для каждого ЭлементСоответствия Из СоответствиеУчетныхЗаписейВсего Цикл

    УчетнаяЗапись = ЭлементСоответствия.Значение;

    #Если Клиент Тогда
    Если ПоказыватьОкноВыполнения Тогда
    СтрокаТаблицыСостояния = ФормаПрогрессора.Задачи.Найти(УчетнаяЗапись, "Объект");
    КонецЕсли;

    ФормаПрогрессора.Значение = 0;
    ФормаПрогрессора.КомментарийЗначения = "Подключение к " + УчетнаяЗапись.Наименование + " <" + УчетнаяЗапись.АдресЭлектроннойПочты + "> ...";
    #КонецЕсли

    // Пробуем подключиться

    Профиль = ПолучитьИнтернетПочтовыйПрофиль(УчетнаяЗапись);

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

    Попытка
    ИнтернетПочта.Подключиться(Профиль);
    Исключение

    ТекстОшибок = Символы.ПС + ТекстОшибок + (Строка(УчетнаяЗапись) + ". " + ОписаниеОшибки());

    #Если Клиент Тогда
    Если ПоказыватьОкноВыполнения Тогда
    СтрокаТаблицыСостояния.Состояние = Перечисления.СостоянияСобытий.Отменено;
    КонецЕсли;
    #КонецЕсли

    Продолжить;
    КонецПопытки;

    // Сначала проверим отправку
    Если Отправить Тогда

    #Если Клиент Тогда
    ФормаПрогрессора.КомментарийЗначения = "Отправка сообщений " + УчетнаяЗапись.Наименование + " <" + УчетнаяЗапись.АдресЭлектроннойПочты + "> ...";
    #КонецЕсли

    Если ТипЗнч(ДеревоУчетныхЗаписейИПисем) = Тип("ДеревоЗначений") Тогда

    СтрокаДереваУчетнойЗаписи = ДеревоУчетныхЗаписейИПисем.Строки.Найти(УчетнаяЗапись, "УчетнаяЗапись");

    Если СтрокаДереваУчетнойЗаписи <> Неопределено Тогда

    #Если Клиент Тогда
    ФормаПрогрессора.МаксимальноеЗначение = СтрокаДереваУчетнойЗаписи.Строки.Количество();
    ФормаПрогрессора.Значение = 0;
    #КонецЕсли

    Для каждого СтрокаПисьма Из СтрокаДереваУчетнойЗаписи.Строки Цикл

    #Если Клиент Тогда
    ФормаПрогрессора.Значение = СтрокаДереваУчетнойЗаписи.Строки.Индекс(СтрокаПисьма) + 1;

    Если ЗначениеЗаполнено(СтрокаПисьма.Письмо.ИмяФайлаРедактированияХТМЛТекста) Тогда
    Сообщить("У письма " + СокрЛП(СтрокаПисьма.Письмо) + " не закончено редактирование текста внешним HTML редактором. Письмо не отправлено.");
    Продолжить;
    КонецЕсли;
    #КонецЕсли

    ПочтовоеСообщение = Новый ИнтернетПочтовоеСообщение;

    Письмо = СтрокаПисьма.Письмо;

    Если ЗначениеЗаполнено(Письмо.КодировкаПисьма) Тогда
    КодировкаСообщения = Письмо.КодировкаПисьма;
    Иначе
    КодировкаСообщения = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ТекущийПользователь, "КодировкаПисьмаЭлектроннойПочтыПоУмолчанию");
    Если Не ЗначениеЗаполнено(КодировкаСообщения) Тогда
    КодировкаСообщения = "utf-8";
    КонецЕсли;
    КонецЕсли;

    ПочтовоеСообщение.Кодировка = КодировкаСообщения;

    // Вложения
    Запрос = Новый Запрос;

    Запрос.УстановитьПараметр("ВыбОбъект", Письмо);
    Запрос.УстановитьПараметр("ПустаяСтрока", ");

    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | ВложенияЭлектронныхПисем.Ссылка КАК Ссылка,
    | ВложенияЭлектронныхПисем.Наименование КАК Наименование,
    | ВложенияЭлектронныхПисем.ИмяФайла КАК ИмяФайла,
    | ВложенияЭлектронныхПисем.Хранилище КАК ХранилищеЗначения
    |ИЗ
    | Справочник.ВложенияЭлектронныхПисем КАК ВложенияЭлектронныхПисем
    |ГДЕ
    | ВложенияЭлектронныхПисем.Объект = &ВыбОбъект
    | И ВложенияЭлектронныхПисем.ИДФайлаПочтовогоПисьма = &ПустаяСтрока";

    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
    ИмяФайла = ";
    Если НЕ ПустаяСтрока(Выборка.ИмяФайла) Тогда
    ИмяФайла = Выборка.ИмяФайла;
    ИначеЕсли НЕ ПустаяСтрока(Выборка.Наименование) Тогда
    ИмяФайла = Выборка.Наименование;
    КонецЕсли;
    ДвоичныеДанные = Выборка.ХранилищеЗначения.Получить();
    Если ТипЗнч(ДвоичныеДанные) = Тип("ДвоичныеДанные") Тогда
    ПочтовоеСообщение.Вложения.Добавить(Выборка.ХранилищеЗначения.Получить(), ИмяФайла);
    КонецЕсли;
    КонецЦикла;

    // Общие свойства письма
    ПочтовоеСообщение.ИмяОтправителя = Письмо.ОтправительИмя;
    ПочтовоеСообщение.Отправитель = Письмо.ОтправительАдресЭлектроннойПочты;
    ПочтовоеСообщение.Тема = Письмо.Тема;

    Для каждого СтрокаТЧ Из Письмо.КомуТЧ Цикл
    Получатель = ПочтовоеСообщение.Получатели.Добавить();
    Получатель.Адрес = СтрокаТЧ.АдресЭлектроннойПочты;
    Получатель.ОтображаемоеИмя = СтрокаТЧ.Представление;
    Получатель.Кодировка = КодировкаСообщения;
    КонецЦикла;
    Для каждого СтрокаТЧ Из Письмо.КопииТЧ Цикл
    Копия = ПочтовоеСообщение.Копии.Добавить();
    Копия.Адрес = СтрокаТЧ.АдресЭлектроннойПочты;
    Копия.ОтображаемоеИмя = СтрокаТЧ.Представление;
    Копия.Кодировка = КодировкаСообщения;
    КонецЦикла;
    Для каждого СтрокаТЧ Из Письмо.СкрытыеКопииТЧ Цикл
    СлепаяКопия = ПочтовоеСообщение.СлепыеКопии.Добавить(СтрокаТЧ.АдресЭлектроннойПочты);
    СлепаяКопия.Адрес = СтрокаТЧ.АдресЭлектроннойПочты;
    СлепаяКопия.ОтображаемоеИмя = СтрокаТЧ.Представление;
    СлепаяКопия.Кодировка = КодировкаСообщения;
    КонецЦикла;

    ТекстПисьмаИД = Письмо.ТекстПисьма;
    ТекстСообщения = ПочтовоеСообщение.Тексты.Добавить();
    ТекстСообщения.Кодировка = КодировкаСообщения;
    Если Письмо.ВидТекстаПисьма = Перечисления.ВидыТекстовЭлектронныхПисем.HTMLСКартинками Тогда
    ТекстСообщения.Текст = ПропарситьHTMLИДВ_ТекстКартинки(СоответствиеТекстовЭлектронныхПисем, ТекущийПользователь, Письмо, ТекстПисьмаИД);
    ТекстСообщения.ТипТекста = ТипТекстаПочтовогоСообщения.HTML;
    ИначеЕсли Письмо.ВидТекстаПисьма = Перечисления.ВидыТекстовЭлектронныхПисем.HTML Тогда
    ТекстСообщения.Текст = ТекстПисьмаИД;
    ТекстСообщения.ТипТекста = ТипТекстаПочтовогоСообщения.HTML;
    Иначе
    ТекстСообщения.Текст = ТекстПисьмаИД;
    ТекстСообщения.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;
    КонецЕсли;

    ПочтовоеСообщение.УведомитьОДоставке = УведомитьОДоставке;
    ПочтовоеСообщение.УведомитьОПрочтении = УведомитьОПрочтении;

    ПочтовоеСообщение.АдресаУведомленияОДоставке.Добавить(ПочтовоеСообщение.Отправитель.Адрес);
    ПочтовоеСообщение.АдресаУведомленияОПрочтении.Добавить(ПочтовоеСообщение.Отправитель.Адрес);

    Попытка

    ИнтернетПочта.Послать(ПочтовоеСообщение);

    Если (Письма <> Неопределено) И (Письма.Получить(Письмо) <> Неопределено) Тогда
    Письма[Письмо].СтатусПисьма = Перечисления.СтатусыПисем.Отправленное;
    Письма[Письмо].ДатаТранспорта = ТекущаяДата();
    Письма[Письмо].ДатаОтправления = ТекущаяДата();
    Письма[Письмо].ИдентификаторПисьма = ПочтовоеСообщение.ИдентификаторСообщения;

    ОчиститьПисьмо(ПочтовоеСообщение);

    Письма[Письмо].ПочтовоеСообщение = Новый ХранилищеЗначения(ПочтовоеСообщение, Новый СжатиеДанных());

    Попытка
    Письма[Письмо].Записать();
    Исключение
    КонецПопытки;
    Иначе
    ОбъектПисьмо = Письмо.ПолучитьОбъект();
    ОбъектПисьмо.СтатусПисьма = Перечисления.СтатусыПисем.Отправленное;
    ОбъектПисьмо.ДатаТранспорта = ТекущаяДата();
    ОбъектПисьмо.ДатаОтправления = ТекущаяДата();
    ОбъектПисьмо.ИдентификаторПисьма = ПочтовоеСообщение.ИдентификаторСообщения;

    ОчиститьПисьмо(ПочтовоеСообщение);

    ОбъектПисьмо.ПочтовоеСообщение = Новый ХранилищеЗначения(ПочтовоеСообщение, Новый СжатиеДанных());

    Попытка
    ОбъектПисьмо.Записать();
    Исключение
    КонецПопытки;
    КонецЕсли;

    Исключение

    ТекстОшибок = Символы.ПС + ТекстОшибок + (Строка(УчетнаяЗапись) + ". " + ОписаниеОшибки());

    #Если Клиент Тогда
    Если ПоказыватьОкноВыполнения Тогда
    СтрокаТаблицыСостояния.Состояние = Перечисления.СостоянияСобытий.Отменено;
    КонецЕсли;
    #КонецЕсли

    Продолжить;

    КонецПопытки;

    КонецЦикла;

    КонецЕсли;

    КонецЕсли;

    КонецЕсли;

    КоличествоНовыхПисем = 0;

    // Теперь проверим получение
    Если Получить Тогда

    МассивПисемДляУдаления = Новый Массив;

    #Если Клиент Тогда
    ФормаПрогрессора.КомментарийЗначения = "Получение сообщений с сервера " + УчетнаяЗапись.Наименование + " <" + УчетнаяЗапись.АдресЭлектроннойПочты + "> ...";
    ФормаПрогрессора.Значение = 0;
    #КонецЕсли

    ОшибкаИсключенияТранзакции = ";

    Попытка
    МассивЗаголовковПисем = ИнтернетПочта.ПолучитьЗаголовки();
    Исключение
    МассивЗаголовковПисем = Новый Массив;
    ТекстОшибок = Символы.ПС + ТекстОшибок + (Строка(УчетнаяЗапись) + ". " + ОписаниеОшибки());

    #Если Клиент Тогда
    Если ПоказыватьОкноВыполнения Тогда
    СтрокаТаблицыСостояния.Состояние = Перечисления.СостоянияСобытий.Отменено;
    КонецЕсли;
    #КонецЕсли

    КонецПопытки;

    #Если Клиент Тогда
    ФормаПрогрессора.КомментарийЗначения = "Выборка заголовков сообщений " + УчетнаяЗапись.Наименование + " <" + УчетнаяЗапись.АдресЭлектроннойПочты + "> ...";
    ФормаПрогрессора.МаксимальноеЗначение = МассивЗаголовковПисем.Количество();
    ФормаПрогрессора.Значение = 0;
    #КонецЕсли

    МассивЗаголовковПисем = ПолучитьСписокПисемКПолучению(УчетнаяЗапись, МассивЗаголовковПисем, МассивПисемДляУдаления);
    Если МассивЗаголовковПисем.Количество() > 0 Тогда

    МассивПисем = ИнтернетПочта.Выбрать(НЕ УчетнаяЗапись.ОставлятьКопииСообщенийНаСервере, МассивЗаголовковПисем);

    #Если Клиент Тогда
    ФормаПрогрессора.КомментарийЗначения = "Регистрация сообщений " + УчетнаяЗапись.Наименование + " <" + УчетнаяЗапись.АдресЭлектроннойПочты + "> ...";
    ФормаПрогрессора.МаксимальноеЗначение = МассивПисем.Количество();
    ФормаПрогрессора.Значение = 0;
    #КонецЕсли

    ЭлементМассива = 0;

    Для каждого ИнтернетПисьмо Из МассивПисем Цикл

    Если НЕ НадоПриниматьПисьмо(УчетнаяЗапись, ИнтернетПисьмо, МассивПисемДляУдаления) Тогда
    Продолжить;
    КонецЕсли;

    КоличествоНовыхПисем = КоличествоНовыхПисем + 1;

    ИсключениеТранзакции = Ложь;
    НачатьТранзакцию();

    #Если Клиент Тогда
    ФормаПрогрессора.Значение = ФормаПрогрессора.Значение + 1;
    #КонецЕсли

    Письмо = ПолучитьДокументОбъектИзИнтернетПочтовогоСообщения(ИнтернетПисьмо, УчетнаяЗапись, мРазделительАдресов, ИсключениеТранзакции);
    Если ТипЗнч(Письмо) <> Тип("ДокументОбъект.ЭлектронноеПисьмо") Тогда
    ОтменитьТранзакцию();
    Продолжить;
    КонецЕсли;

    ПрименитьФильтрыКПисьму(Письмо, ТекущийПользователь);

    Если (Письмо.УчетнаяЗапись.ЗаполнятьПустойПредметДляНовыхПисемИзТемыПисьма
    ИЛИ Письмо.УчетнаяЗапись.ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполн­ятьПредмет
    ИЛИ Письмо.УчетнаяЗапись.ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполн­ятьОснованиеНовогоПисьма
    ИЛИ Письмо.УчетнаяЗапись.ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполн­ятьГруппуПисемНовогоПисьма)
    И НЕ ПустаяСтрока(Письмо.Тема) Тогда
    НайтиИПроставитьОснованиеПисьма(Письмо);
    КонецЕсли;

    Попытка
    Письмо.Записать(РежимЗаписиДокумента.Запись);
    Исключение
    ИсключениеТранзакции = Истина;
    ОшибкаИсключенияТранзакции = ОписаниеОшибки();
    ОтменитьТранзакцию();
    Продолжить;
    КонецПопытки;

    // Вложения
    Если ИнтернетПисьмо.Вложения.Количество() > 0 И НЕ ИсключениеТранзакции Тогда

    Для каждого Вложение Из ИнтернетПисьмо.Вложения Цикл

    Если Вложение.Данные = Неопределено Тогда
    Продолжить;
    КонецЕсли;

    НовоеВложение = Справочники.ВложенияЭлектронныхПисем.СоздатьЭлемент();
    Если НЕ ПустаяСтрока(Вложение.Идентификатор) Тогда
    Письмо.ВидТекстаПисьма = Перечисления.ВидыТекстовЭлектронныхПисем.HTMLСКартинками;
    КонецЕсли;
    НовоеВложение.ИДФайлаПочтовогоПисьма = Вложение.Идентификатор;
    Если ТипЗнч(Вложение.Данные) = Тип("ИнтернетПочтовоеСообщение") Тогда
    НовоеВложение.ИмяФайла = ?(ПустаяСтрока(Вложение.Имя), (ИнтернетПисьмо.ИдентификаторСообщения), Вложение.Имя) + ".msg";
    Иначе
    НовоеВложение.ИмяФайла = Вложение.Имя;
    КонецЕсли;
    НовоеВложение.Объект = Письмо.Ссылка;
    НовоеВложение.Хранилище = Новый ХранилищеЗначения(Вложение.Данные, Новый СжатиеДанных());
    Если ТипЗнч(Письмо.ПредметКонтакта) = Тип("СправочникСсылка.ФизическиеЛица") Тогда
    НовоеВложение.Предмет = Письмо.ПредметКонтакта;
    Иначе
    НовоеВложение.Предмет = Справочники.ФизическиеЛица.ПустаяСсылка();
    КонецЕсли;
    Попытка
    НовоеВложение.Записать();
    Исключение
    ИсключениеТранзакции = Истина;
    ОшибкаИсключенияТранзакции = ОписаниеОшибки();
    Прервать;
    КонецПопытки;

    КонецЦикла;

    Если НЕ ИсключениеТранзакции Тогда

    ОчиститьПисьмо(ИнтернетПисьмо);

    Письмо.ПочтовоеСообщение = Новый ХранилищеЗначения(ИнтернетПисьмо, Новый СжатиеДанных());

    Попытка
    Письмо.Записать();
    Исключение
    ИсключениеТранзакции = Истина;
    ОшибкаИсключенияТранзакции = ОписаниеОшибки();
    ОтменитьТранзакцию();
    Прервать;
    КонецПопытки;

    Иначе

    ОтменитьТранзакцию();
    Прервать;

    КонецЕсли;

    КонецЕсли;

    Если ИсключениеТранзакции Тогда
    ТекстОшибок = Символы.ПС + ТекстОшибок + (Строка(УчетнаяЗапись) + ". " + ОшибкаИсключенияТранзакции);

    #Если Клиент Тогда
    Если ПоказыватьОкноВыполнения Тогда
    СтрокаТаблицыСостояния.Состояние = Перечисления.СостоянияСобытий.Отменено;
    КонецЕсли;
    #КонецЕсли

    ОтменитьТранзакцию();
    Продолжить;

    Иначе

    ЗафиксироватьТранзакцию();

    КонецЕсли;

    КонецЦикла;

    КонецЕсли;

    Если МассивПисемДляУдаления.Количество() > 0 Тогда

    #Если Клиент Тогда
    ФормаПрогрессора.КомментарийЗначения = "Удаление сообщений с сервера " + УчетнаяЗапись.Наименование + " <" + УчетнаяЗапись.АдресЭлектроннойПочты + "> ...";
    #КонецЕсли

    Попытка
    ИнтернетПочта.УдалитьСообщения(МассивПисемДляУдаления);
    Исключение
    ТекстОшибок = Символы.ПС + ТекстОшибок + (Строка(УчетнаяЗапись) + ". " + ОшибкаИсключенияТранзакции);
    КонецПопытки;

    КонецЕсли;

    КонецЕсли;

    ИнтернетПочта.Отключиться();

    #Если Клиент Тогда
    Если ПоказыватьОкноВыполнения Тогда
    Если СтрокаТаблицыСостояния.Состояние <> Перечисления.СостоянияСобытий.Отменено Тогда
    СтрокаТаблицыСостояния.Состояние = Перечисления.СостоянияСобытий.Завершено;
    КонецЕсли;
    КонецЕсли;
    #КонецЕсли

    КонецЦикла;

    КонецЕсли;

    #Если Клиент Тогда
    Если ПоказыватьОкноВыполнения Тогда

    ФормаПрогрессора.Ошибки = СокрЛП(ТекстОшибок);

    Если НЕ ФормаПрогрессора.Открыта() Тогда
    ФормаПрогрессора.Открыть();
    КонецЕсли;

    Если ПустаяСтрока(ФормаПрогрессора.Ошибки) Тогда
    ФормаПрогрессора.Закрыть();
    Иначе
    ФормаПрогрессора.КомментарийЗначения = "Задачи завершены с ошибками";
    ФормаПрогрессора.ЭлементыФормы.ПанельЗадач.Страницы.Ошибки.Заголовок = "Ошибки(!)";
    ФормаПрогрессора.ЭлементыФормы.ПанельЗадач.ТекущаяСтраница = ФормаПрогрессора.ЭлементыФормы.ПанельЗадач.Страницы.Ошибки;
    КонецЕсли;

    КонецЕсли;
    #КонецЕсли

    КонецПроцедуры
```

Походу самое главное это вот это:

```1c
    ПочтовоеСообщение.УведомитьОДоставке = УведомитьОДоставке;
    ПочтовоеСообщение.УведомитьОПрочтении = УведомитьОПрочтении;

    ПочтовоеСообщение.АдресаУведомленияОДоставке.Добавить(ПочтовоеСообщение.Отправитель.Адрес);
    ПочтовоеСообщение.АдресаУведомленияОПрочтении.Добавить(ПочтовоеСообщение.Отправитель.Адрес);
```
---
только сейчас заметил весёлый ответ о прочтении по умолчанию:
"Сообщение, отправленное *********, было открыто. Это не означает, что сообщение было прочитано или понято."
---
Письмо.АдресаУведомленияОПрочтении.Добавить(РеквизитыОтправителя.АдресЭлектроннойПочты);

Плюс почту получателя можно добавить.