ИнтернетПочта.ПолучитьЗаголовки

Методы · GetHeaders

Формирует массив, содержащий объекты типа ИнтернетПочтовоеСообщение. Каждый объект содержит только следующие поля: Заголовок, Размер, ИдентификаторСообщения, Тема, Отправитель, ОбратныйАдрес, Получатели, Копии, СлепыеКопии, ДатаОтправления. Выбираются заголовки всех сообщений, находящихся на сервере.

Синтаксис

ПолучитьЗаголовки(<ПараметрыОтбора>)

Примеры платформы

Профиль = Новый ИнтернетПочтовыйПрофиль;
Почта = Новый ИнтернетПочта;
Почта.Подключиться(Профиль);
Заголовки = Почта.ПолучитьЗаголовки();
Если Заголовки.Количество() = 0 Тогда
    Предупреждение(НСтр("ru='На сервере нет сообщений!';"
     + " en='There are no messages on the server!'"),
     ,НСтр("ru='Нет сообщений';" en='No messages'"));
КонецЕсли;
// выбираем из массива Заголовки сообщения,
// которые необходимо получить полностью
Письма = Почта.Выбрать(Истина, Заголовки);
// Письма и Заголовки содержат одинаковый
// набор полных сообщений
Почта.Отключиться();
Полное описание, параметры и ограничения

ИнтернетПочта.ПолучитьЗаголовки (InternetMail.GetHeaders)

ИнтернетПочта (InternetMail)

ПолучитьЗаголовки (GetHeaders)

Доступен, начиная с версии 8.0.

Синтаксис:
ПолучитьЗаголовки(<ПараметрыОтбора>)
Параметры:

<ПараметрыОтбора> (необязательный)
Тип: Структура.
В качестве ключей структуры используются названия свойств письма, по которым осуществляется отбор.
Значения могут быть выражения следующих типов: Строка, Дата, Число, Булево.
Тип значения определяется ключом. Например, если требуется отобрать письма до определённой даты, то в качестве значения необходимо использовать выражения типа Дата.
Если в качестве значения используется строка, то регистр не имеет значения.
Если заданы несколько ключей, то они применяются последовательно по логическому И.
Если в структуре передано неподдерживаемое значение ключа, оно игнорируется, ошибки при этом не возникает.
ОтправленОтвет (Answered) - Булево. Отобрать сообщения, у которых установлен флаг – Answered;

Недавние (Recent) - Булево. Отобрать сообщения, пришедшие в рамках текущей IMAP-сессии.

СлепыеКопии (Bcc) - Строка. Отобрать сообщения, которые имеют “строка” в поле Bcc;

Копии (Cc) - Строка. Отобрать сообщения, которые имеют “строка” в поле Cc;

Получатели (To) - Строка. Отобрать сообщения, которые имеют “строка” в поле To;

ДатаОтправления (PostDating) - Дата. Отобрать сообщения, у которых значение поле Date: равно “Дата”;

Отправитель (From) - Строка. Отобрать все сообщения у которых встречается “строка”в поле From;

ДоДатыОтправления (BeforeDateOfPosting) - Дата. Отобрать сообщения, у которых значение поле Date: перед “дата”;

ПослеДатыОтправления (AfterDateOfPosting) - Дата. Отобрать сообщения, у которых значение поля Date: после значения “Дата”;

Тема (Subject) - Строка. Отобрать сообщения, в заголовке которых встречается заданная строка;

Текст (Text) - Строка. Отобрать сообщения, в любых текстовых полях которого встречается заданная строка;

ТелоСообщения (Body) - Строка. Отобрать сообщения, в теле которых встречается строка – “строка”;

Удаленные (Deleted) - Булево. Отобрать сообщения, которые должны быть удалены или не должны быть удалены;

УстановленФлаг (Flagged) - Булево. Отобрать сообщения, которые помечены флагом или не помечены флагом;

Прочитанные (Seen) - Булево. Отобрать сообщения, которые были прочитаны или не прочитаны;

Новые (New) - Булево. Отобрать новые или старые сообщения.
Пример:

ПараметрыОтбораIMAP = Новый Структура;
ПараметрыОтбораIMAP.Вставить("Новые", Истина);
ПараметрыОтбораIMAP.Вставить("Тема", "привет");
Почта.ПолучитьЗаголовки(ПараметрыОтбораIMAP);

Строковые значения критериев отбора отправляются в кодировке US-ASCII, если содержат только символы ANSI и в кодировке UTF-8 - в противном случае. Не все IMAP-серверы поддерживают UTF-8, поэтому сервер может выдать соответствующую ошибку.
Возвращаемое значение:
Тип: Массив.

Описание:

Формирует массив, содержащий объекты типа ИнтернетПочтовоеСообщение. Каждый объект содержит только следующие поля:
Заголовок,

Размер,

ИдентификаторСообщения,

Тема,

Отправитель,

ОбратныйАдрес,

Получатели,

Копии,

СлепыеКопии,

ДатаОтправления.
Выбираются заголовки всех сообщений, находящихся на сервере.

Доступность:

Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Примечание:
Полученный массив может быть передан в качестве параметра методу Выбрать. Метод Выбрать получает указанные сообщения полностью, и возвращает их в массиве.
Для IMAP протокола заголовки будут выбраны из IMAP-почтового ящика (ТекущийПочтовыйЯщик).
Внимание! Фильтрация заголовков работает только при работе по протоколу IMAP. При работе по протоколу POP3 отбор писем не выполняется - метод вернет полный массив сообщений, даже если установлены параметры отбора.
Пример:

Профиль = Новый ИнтернетПочтовыйПрофиль;
// ...

// заполнение профиля

// ...

Почта = Новый ИнтернетПочта;
Почта.Подключиться(Профиль);
Заголовки = Почта.ПолучитьЗаголовки();
Если Заголовки.Количество() = 0 Тогда
Предупреждение(НСтр("ru='На сервере нет сообщений!';"
+ " en='There are no messages on the server!'"),
,НСтр("ru='Нет сообщений';" en='No messages'"));
КонецЕсли;

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

Письма = Почта.Выбрать(Истина, Заголовки);

// Письма и Заголовки содержат одинаковый
// набор полных сообщений

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

См. также:
ИнтернетПочта, метод Выбрать

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Прочитать своё IMAP-письмо без удаления и отметки прочтения

Полный учебный модуль для отдельного локального почтового стенда: реальные IMAP/SMTP-контракты, свои сообщения/UID/папки и проверяемые эффекты. В ходе подготовки справочника почта и сеть не выполняются.

Где и как запускать

Полный клиентский общий модуль УчебнаяПочта85, толстое управляемое Windows-приложение; собственный loopback-сервер и отдельный полный модуль формы вызова.

Подготовка

  1. Новая пустая конфигурация УчебнаяПочта85, платформа8.5.1.1343, управляемое приложение и именно толстый Windows-клиент. Учебный клиент и отдельный тестовый почтовый сервер на одной машине; рабочие почтовые профили не используются.

  2. Установленный ИнтернетПочта использует SMTP/POP3/IMAP, не MAPI. Нативная справка прямо говорит: SSL есть, проверки сертификата клиента/сервера нет. Код этого урока не выдаётся за защищённую production-интеграцию.

  3. Ваш собственный локальный сервер слушает только127.0.0.1:1143(IMAP) и127.0.0.1:1025(SMTP). Исходящая доставка/relay/DNS и внешние подключения запрещены настройкой сервера; SMTP только принимает в вашу локальную тестовую очередь.

  4. Создайте нового отдельного пользователя lab85 с собственным ASCII-паролем не более64 символов и отдельной почтовой областью. IMAP поддерживает hierarchy с выбираемыми родительскими папками, UIDPLUS, Flagged/Deleted/Seen и обычную тестовую аутентификацию; SMTP поддерживает AUTH LOGIN для lab85.

  5. Локальная модель намеренно допускает обычную аутентификацию; это не шифрование и не безопасный рецепт для LAN/интернета. Настройка SSLIMAP устанавливается до нестандартного порта1143, потому что смена SSL-флага меняет порт по умолчанию.

  6. Только один клиент/автор и никакие параллельные доставщики. Квота тестового пользователя не более1МиБ, каждое учебное письмо не более4КиБ. Нет чужих сообщений, ссылок на реальные вложения и рабочих папок.

  7. Для первого урока вручную подготовьте папку LAB85_Read с ровно одним письмом: тема MAIL-LAB85-READ, простой текст MAIL-LAB85, без вложений, нечастичное, без Deleted. Этот исходный образец не удаляется.

  8. Для второго и четвёртого урока новые пространства LAB85_UUID/LAB85_MERGE_UUID создаёт только сам учебный код. IMAP-перенос требует UIDPLUS. INBOX используется только как место выхода из своей папки: его письма не выбираются, не помечаются и не очищаются.

  9. Общие → Общие модули → УчебнаяПочта85: Клиент(управляемое приложение)=Истина, Сервер/ВызовСервера/Глобальный/Привилегированный/ВнешнееСоединение=Ложь, повторное использование выключено. Основной полный модуль одного урока вставляется целиком, одноимённые функции не склеиваются.

  10. Обработки → ЗапускПочты85 → управляемая форма Форма: СогласенНаЛокальнуюПочту85 и Занято85 Булево исходно Ложь; ПарольУчебнойПочты85 Строка, Итог85 Строка неограниченной длины только для просмотра. Пароль не сохраняйте в настройках/истории; включите скрытое отображение поля в редакторе формы.

  11. Отдельный полный модуль формы — дополнительный блок. Команда ВыполнитьПочту85 назначается кнопке, Действие=ВыполнитьПочту85, вызывает клиентский УчебнаяПочта85.ВыполнитьПример85(согласие,пароль); после успеха/ошибки реквизит пароля очищается.

  12. F7 и обновление только своего стенда. Сначала читающий урок, затем собственный цикл IMAP, затем SMTP и MIME. Разрешение на каждый будущий ручной сетевой опыт отдельно; здесь его выполнения нет.

  13. У MIME-урока две ASCII-части message/partial создаются из настоящих исходных MIME-байтов и разбираются УстановитьИсходныеДанные; в собственную папку добавляются по IMAP. Номера1/2, общий id, total2, 7bit и разрыв по CRLF соответствуют RFC2046 §5.2.2: https://www.rfc-editor.org/rfc/rfc2046.html#section-5.2.2 .

  14. runtimeVerifiedScenarios=0:1С/серверы/GUI не запускались, реальная почта и сеть не вызывались, сообщения не отправлялись/удалялись и новые резервные копии/архивы не создавались. Приведённые эффекты относятся только к будущему отдельно разрешённому ручному выполнению.

Функция ВыполнитьПример85(Согласие, Пароль) Экспорт
    Если Не Согласие Тогда
        ВызватьИсключение "Нужен свой локальный изолированный почтовый стенд УчебнаяПочта85 и согласие";
    КонецЕсли;
    Если ТипЗнч(Пароль) <> Тип("Строка") Или СтрДлина(Пароль) = 0 Или СтрДлина(Пароль) > 64 Тогда
        ВызватьИсключение "Нужен отдельный ASCII-пароль своего локального тестового пользователя";
    КонецЕсли;
    Почта = Неопределено;
    Попытка
        Почта = Новый ИнтернетПочта;
        Почта.Подключиться(СвойПрофиль85(Пароль, Ложь), ПротоколИнтернетПочты.IMAP);
        Если Почта.ПолучитьПочтовыеЯщики().Найти("LAB85_Read") = Неопределено Тогда
            ВызватьИсключение "Нет своей вручную подготовленной папки LAB85_Read";
        КонецЕсли;
        Почта.ТекущийПочтовыйЯщик = "LAB85_Read";
        Если Почта.ТекущийПочтовыйЯщик <> "LAB85_Read" Или Почта.ПолучитьКоличествоСообщений() <> 1 Тогда
            ВызватьИсключение "Нужна собственная папка с одним подготовленным письмом";
        КонецЕсли;
        Идентификаторы = Почта.ПолучитьИдентификаторы(Новый Массив);
        Если Идентификаторы.Количество() <> 1 Тогда
            ВызватьИсключение "Нет ровно одного настоящего UID; пустой отбор не передаётся Выбрать";
        КонецЕсли;
        ФлагиДо = СвоиФлаги85(Почта, Идентификаторы);
        Если ФлагиДо.Удаленное Тогда
            ВызватьИсключение "Подготовленное своё письмо не должно быть помечено Deleted";
        КонецЕсли;
        Заголовки = Почта.ПолучитьЗаголовки(Новый Структура("Тема", "MAIL-LAB85-READ"));
        Если Заголовки.Количество() <> 1 Тогда
            ВызватьИсключение "Ожидается один свой заголовок; пустой массив не означает выбрать ничего";
        КонецЕсли;
        Заголовок = Заголовки[0];
        Если ТипЗнч(Заголовок) <> Тип("ИнтернетПочтовоеСообщение") Или Заголовок.Тема <> "MAIL-LAB85-READ"
            Или Заголовок.Размер < 1 Или Заголовок.Размер > 4096 Тогда
            ВызватьИсключение "Свой заголовок и малый размер не подтверждены";
        КонецЕсли;
        Письмо = ПроверитьСвоёПисьмо85(Почта, Идентификаторы, "MAIL-LAB85-READ", "MAIL-LAB85");
        ФлагиПосле = СвоиФлаги85(Почта, Идентификаторы);
        Если ФлагиПосле.Удаленное <> ФлагиДо.Удаленное Или ФлагиПосле.Прочитанное <> ФлагиДо.Прочитанное
            Или Почта.ПолучитьКоличествоСообщений() <> 1 Тогда
            ВызватьИсключение "Непрочитанный/неудалённый статус или количество изменились";
        КонецЕсли;
        Итог = "Получен реальный заголовок и своё полное письмо: " + Письмо.Тема
            + "; тело=" + СокрЛП(Письмо.Тексты.Получить(0).Текст) + "; удаление и отметка прочтения не запрашивались.";
        Почта.Отключиться();
        Почта = Неопределено;
        Возврат Итог;
    Исключение
        ЗакрытьПослеОшибки85(Почта);
        ВызватьИсключение "Чтение своего локального письма не подтверждено; никаких удалений или повторной выборки всех писем нет.";
    КонецПопытки;
КонецФункции

Функция СвойПрофиль85(Пароль, ДляSMTP)
    Профиль = Новый ИнтернетПочтовыйПрофиль;
    Профиль.АдресСервераPOP3 = "";
    Профиль.АдресСервераIMAP = "";
    Профиль.АдресСервераSMTP = "";
    Профиль.Таймаут = 15;
    Если ДляSMTP Тогда
        Профиль.ИспользоватьSSLSMTP = Ложь;
        Профиль.АдресСервераSMTP = "127.0.0.1";
        Профиль.ПортSMTP = 1025;
        Профиль.ПользовательSMTP = "lab85";
        Профиль.ПарольSMTP = Пароль;
        Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
        Профиль.ТолькоЗащищеннаяАутентификацияSMTP = Ложь;
    Иначе
        Профиль.ИспользоватьSSLIMAP = Ложь;
        Профиль.АдресСервераIMAP = "127.0.0.1";
        Профиль.ПортIMAP = 1143;
        Профиль.ПользовательIMAP = "lab85";
        Профиль.ПарольIMAP = Пароль;
        Профиль.ТолькоЗащищеннаяАутентификацияIMAP = Ложь;
    КонецЕсли;
    Возврат Профиль;
КонецФункции

Процедура ЗакрытьПослеОшибки85(Почта)
    Если Почта <> Неопределено Тогда
        Попытка
            Почта.Отключиться();
        Исключение
            ВызватьИсключение "Опыт и отключение не подтверждены; проверьте только свой локальный сервер. Сырые ошибки и пароль не выводятся.";
        КонецПопытки;
    КонецЕсли;
КонецПроцедуры

Функция ПроверитьСвоёПисьмо85(Почта, Идентификаторы, Тема, Тело)
    Если ТипЗнч(Идентификаторы) <> Тип("Массив") Тогда
        ВызватьИсключение "Нужен настоящий массив серверных идентификаторов";
    КонецЕсли;
    Если Идентификаторы.Количество() <> 1 Или Почта.ПолучитьКоличествоСообщений() <> 1 Тогда
        ВызватьИсключение "Нужно ровно одно своё сообщение; пустой отбор запрещён";
    КонецЕсли;
    Письма = Почта.Выбрать(Ложь, Идентификаторы, Ложь);
    Если Письма.Количество() <> 1 Тогда
        ВызватьИсключение "Получено не одно ожидаемое своё письмо";
    КонецЕсли;
    Письмо = Письма[0];
    Если ТипЗнч(Письмо) <> Тип("ИнтернетПочтовоеСообщение") Тогда
        ВызватьИсключение "Нужен настоящий результат почтового получения";
    КонецЕсли;
    Если Письмо.Идентификатор.Количество() <> 1 Тогда
        ВызватьИсключение "Нужно одно нечастичное письмо с одним серверным UID";
    КонецЕсли;
    Если Письмо.Идентификатор[0] <> Идентификаторы[0] Или Письмо.Частичное
        Или Письмо.Тема <> Тема Или Письмо.Тексты.Количество() <> 1 Или Письмо.Вложения.Количество() <> 0 Тогда
        ВызватьИсключение "UID, тема, вид или состав своего сообщения не подтверждены";
    КонецЕсли;
    Если СокрЛП(Письмо.Тексты.Получить(0).Текст) <> Тело Тогда
        ВызватьИсключение "Нормализованный текст не содержит ровно свой ожидаемый маркер";
    КонецЕсли;
    Возврат Письмо;
КонецФункции

Функция СвоиФлаги85(Почта, Идентификаторы)
    Если Идентификаторы.Количество() <> 1 Тогда
        ВызватьИсключение "Нужен один настоящий UID своей текущей папки";
    КонецЕсли;
    Карта = Почта.ПолучитьФлагиСообщений(Идентификаторы);
    Если ТипЗнч(Карта) <> Тип("Соответствие") Тогда
        ВызватьИсключение "Флаги должны вернуться настоящим соответствием UID–объект";
    КонецЕсли;
    Флаги = Карта.Получить(Идентификаторы[0]);
    Если ТипЗнч(Флаги) <> Тип("ФлагиИнтернетПочтовогоСообщения") Тогда
        ВызватьИсключение "Сервер не вернул флаги для своего UID";
    КонецЕсли;
    Если ТипЗнч(Флаги.Помеченное) <> Тип("Булево") Или ТипЗнч(Флаги.Удаленное) <> Тип("Булево") Тогда
        ВызватьИсключение "Учебный сервер должен явно поддерживать Flagged и Deleted";
    КонецЕсли;
    Возврат Флаги;
КонецФункции
Управляемая команда локального почтового опыта

УчебнаяПочта85 → Обработки → ЗапускПочты85 → Формы → Форма → Модуль

Полный модуль своей формы: команда ВыполнитьПочту85, Действие=ВыполнитьПочту85; согласие и отдельный пароль передаются клиентскому общему модулю.

&НаКлиенте
Процедура ВыполнитьПочту85(Команда)
    Если Не СогласенНаЛокальнуюПочту85 Или Занято85 Тогда
        ВызватьИсключение "Нужно отдельное согласие на свой локальный почтовый опыт";
    КонецЕсли;
    Занято85 = Истина;
    Попытка
        Итог85 = УчебнаяПочта85.ВыполнитьПример85(СогласенНаЛокальнуюПочту85, ПарольУчебнойПочты85);
    Исключение
        ПарольУчебнойПочты85 = "";
        Занято85 = Ложь;
        Итог85 = "Опыт не подтверждён. Проверьте только свой локальный стенд; подробности с учётными данными не отображаются.";
        ВызватьИсключение "Локальный почтовый опыт не завершён";
    КонецПопытки;
    ПарольУчебнойПочты85 = "";
    Занято85 = Ложь;
КонецПроцедуры

Разбор по шагам

  1. Проверяются свой стенд/версия/согласие и локальный пароль, создаётся настоящий IMAP-профиль.

  2. Выбирается только собственная LAB85_Read с одним подготовленным письмом, не рабочий INBOX.

  3. Настоящие UID и флаги получают с сервера, пустой отбор запрещается до Выбрать.

  4. ПолучитьЗаголовки фильтрует собственную тему; проверяются тип, тема и малый размер, заголовок не считается телом.

  5. Выбрать(Ложь,UID,Ложь) получает полное письмо, проверяет серверную идентичность и нормализованный свой текст.

  6. Deleted/Seen и количество перечитываются, чтобы не заявлять сохранность только по намерению вызова.

  7. Сессия отключается, безопасный итог содержит свой текст, пароль не показывается.

Как проверить результат

  1. Папка LAB85_Read содержит ровно один настоящий UID.

  2. Заголовок и полное письмо подтверждают тему MAIL-LAB85-READ.

  3. Полный текст MAIL-LAB85, вложений нет.

  4. Количество/Deleted/Seen после чтения не изменились.

  5. Нет вызова удаления, отправки или отметки прочтения; сессия отключается.

Ожидаемый результат

Ожидаемые результаты относятся к будущему отдельно разрешённому ручному опыту. Реальная1С/почта/сеть не запускались, runtimeVerifiedScenarios=0.

На что обратить внимание

  1. Выбрать() по умолчанию удаляет сообщения. Для чтения указаны Ложь и Ложь: не удалять и не отмечать прочитанными. Последний флаг актуален для IMAP, для POP3 допустима только Истина.

  2. Пустой или неуказанный второй массив Выбрать означает получить все письма, не получить ничего. Во всех уроках перед выборкой проверяется строго положительное собственное число UID.

  3. Фильтр ПолучитьЗаголовки/ПолучитьИдентификаторы действует только IMAP; POP3 игнорирует его. Неизвестный ключ фильтра тоже может игнорироваться. Читающая папка содержит ровно один собственный проверяемый образец.

  4. ПолучитьЗаголовки возвращает ограниченный набор полей: тело/вложения ещё не получены. Полное письмо отдельно загружается по настоящему UID и проверяется по теме, составу и нормализованному простому тексту.

  5. UID уникален в пределах папки, не всей системы. После переноса или переименования код снова получает реальные идентификаторы, не использует порядковый номер строки или старый UID другого ящика.

  6. СимволРазделитель получен от своего сервера, не жёстко задан /. Иерархия создаётся только внутри своего случайного корня; сервер без подходящей иерархии не объявляется совместимым.

  7. Подписка и выбор текущей папки — разные действия. Список подписанных имён проверяется после подписки и отмены; изменение подписки не отправляет письмо.

  8. Послать(...,IMAP) добавляет сообщение в текущую папку IMAP, это не SMTP-доставка получателю. SMTP-урок отдельно использует SMTP и локальную тестовую очередь.

  9. Послать возвращает Соответствие отказов получателей. Пустое соответствие означает принятие на этом этапе, не подтверждение окончательной доставки или прочтения; исключение не разрешает слепой повтор отправки.

  10. SSL-флаг/ТолькоЗащищеннаяАутентификация не доказывает проверку сертификата. Нативный ИнтернетПочта этого не предоставляет; профиль данного урока допускается только на отдельном loopback-стенде без реальных секретов.

  11. АутентификацияSMTP/СпособSMTPАутентификации.Login устарели и не рекомендуются с8.3.1. Здесь они явно показывают контракт отдельного тестового AUTH LOGIN в толстом клиенте; это не рекомендация для новой production-интеграции.

  12. УстановитьФлагиСообщений принимает соответствие UID→ФлагиИнтернетПочтовогоСообщения, не массив UID. Истина ставит, Ложь снимает, Неопределено оставляет флаг; неподдерживаемый флаг сервер может проигнорировать.

  13. Урок меняет Flagged в реально полученном объекте флагов, перечитывает результат и требует поддержку Flagged/Deleted. Снимок других флагов не атомарен; поэтому нет сторонних клиентов и доставщиков.

  14. УдалитьСообщения при IMAP сначала ставит Deleted, ОтменитьУдалениеСообщений снимает пометку, ОчиститьУдаленныеСообщения удаляет ВСЕ Deleted текущей папки. Очистка разрешена только в своей папке с одним подтверждённым собственным письмом.

  15. УдалитьПочтовыйЯщик удаляет папку со всем содержимым. Второй урок удаляет лишь свои проверенные пустые папки; MIME-урок — только свою папку с двумя подтверждёнными UID. Восстановление/корзина не обещаются.

  16. ПереместитьВПочтовыйЯщик требует UIDPLUS и существующую собственную папку. При ошибке/частичном эффекте код ничего не удаляет и не повторяет автоматически; проверьте своё пространство вручную.

  17. message/partial — не multipart/mixed и не вручную установленный readonly-флаг Частичное. Две реально разобранные части имеют общий MIME-id, но разные Message-ID и настоящие UID своей папки.

  18. ОбъединитьЧастичные работает с реальными полученными объектами в RAM: неполный набор остаётся частичным, полный набор проверяется по двум строкам и двум настоящим UID. Это не серверное объединение писем.

  19. Нормализация текста допускает только обычные конечные пробелы/переводы строк данного маленького ASCII-образца. Это не проверка произвольного бинарного вложения и не лимит потока получения; квота и неизменяемый тестовый сервер обязательны.

  20. Пароль и сырые серверные исключения не выводятся. Очистка реквизита не гарантирует стирание всех копий в RAM. Ошибка отключения тоже сообщается явно, а не проглатывается.

  21. Отключиться закрывает сессию, но не является откатом отправки, перемещения, пометок или удаления. После сбоя фактическое состояние проверяется только на своём сервере.

  22. 1С/SMTP/IMAP не запускались: runtimeVerifiedScenarios=0. Статические тесты проверяют контракт и код, не фактическое поведение конкретного почтового сервера.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.