Устанавливает исходные данные сообщения и инициализирует на основе них объект типа ИнтернетПочтовоеСообщение. В случае ошибки разбора указанных данных генерируетcя исключение.
Синтаксис
УстановитьИсходныеДанные(<ИсходныеДанные>)Полное описание, параметры и ограничения
ИнтернетПочтовоеСообщение.УстановитьИсходныеДанные (InternetMailMessage.SetSourceData)
ИнтернетПочтовоеСообщение (InternetMailMessage)
УстановитьИсходныеДанные (SetSourceData)
Доступен, начиная с версии 8.3.5.
Синтаксис:
УстановитьИсходныеДанные(<ИсходныеДанные>)
Параметры:
<ИсходныеДанные> (обязательный)
Тип: ДвоичныеДанные.
Исходные данные почтового сообщения.
Описание:
Устанавливает исходные данные сообщения и инициализирует на основе них объект типа ИнтернетПочтовоеСообщение. В случае ошибки разбора указанных данных генерируетcя исключение.
Доступность:
Тонкий клиент, сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.3.5.
Методическая информация
Практические примеры
Увидеть, почему MIME-байты не являются полной копией объекта
ПолучитьИсходныеДанные формирует представление для передачи по почте. По локальной справке слепые копии в это представление не входят.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
В учебной базе выполните код на сервере. Письмо создаётся и разбирается в памяти; профиль почты, пароль, SMTP/IMAP и вызов Послать не нужны.
Все адреса заданы на учебном домене example.invalid. Не заменяйте их реальными адресами и не добавляйте отправку при первой проверке.
Письмо о двух учебных товарах не содержит персональных данных, реальных заказов и внешних HTML-ресурсов. Его текст не является счётом или подтверждением доставки.
Письмо = Новый ИнтернетПочтовоеСообщение;
Письмо.Кодировка = "UTF-8";
Письмо.Отправитель = "guide@example.invalid";
Письмо.ИмяОтправителя = "Учебный магазин";
Письмо.Получатели.Добавить("student@example.invalid");
Письмо.Тема = "Учебные товары";
Письмо.Тексты.Добавить("Книга: 3; Ручка: 1", ТипТекстаПочтовогоСообщения.ПростойТекст);
Письмо.СлепыеКопии.Добавить("archive@example.invalid");
Сообщить(Письмо.СлепыеКопии.Количество() = 1);
БайтыMIME = Письмо.ПолучитьИсходныеДанные();
Копия = Новый ИнтернетПочтовоеСообщение;
Копия.УстановитьИсходныеДанные(БайтыMIME);
Если Копия.СтатусРазбора <> СтатусРазбораИнтернетПочтовогоСообщения.ОшибокНеОбнаружено Тогда
ВызватьИсключение "Собственная MIME-копия разобрана с ошибками";
КонецЕсли;
Сообщить(БайтыMIME.Размер() > 0);
Сообщить(Копия.Тема = "Учебные товары");
Сообщить(Копия.СлепыеКопии.Количество() = 0);
Сообщить(Письмо.СлепыеКопии.Количество() = 1);Разбор по шагам
У исходного объекта есть одна собственная слепая копия.
Получаем MIME-байты и разбираем их в новом объекте; проверки статуса обязательны.
Основная тема восстановлена, но слепой адрес в копии отсутствует. Исходный объект всё ещё содержит его.
Как проверить результат
Пять сообщений Истина: источник с одной BCC, MIME непустой, тема сохранена, копия без BCC, источник не изменён.
Ни отправки, ни раскрытия слепого адреса обычным адресатам здесь нет.
Ожидаемый результат
На конкретном различии показано, что MIME-roundtrip не гарантирует эквивалентность объектов.
На что обратить внимание
Объект письма и успешный разбор MIME не доказывают отправку, доставку, подлинность отправителя или прочтение.
Не используйте MIME как единственный архив внутренней маршрутизации, статусов сервера и всех свойств объекта.
Прочие особенности MIME-разбора могут тоже изменить представление; это не универсальный сериализатор 1С.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Разобрать собственное исходное MIME-письмо
Между заголовками и телом одна пустая строка, переносы CRLF, тело ASCII. УстановитьИсходныеДанные принимает байты, не строку и не путь к EML.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
В учебной базе выполните код на сервере. Письмо создаётся и разбирается в памяти; профиль почты, пароль, SMTP/IMAP и вызов Послать не нужны.
Все адреса заданы на учебном домене example.invalid. Не заменяйте их реальными адресами и не добавляйте отправку при первой проверке.
Письмо о двух учебных товарах не содержит персональных данных, реальных заказов и внешних HTML-ресурсов. Его текст не является счётом или подтверждением доставки.
СтрокиПисьма = Новый Массив;
СтрокиПисьма.Добавить("From: Guide <guide@example.invalid>");
СтрокиПисьма.Добавить("To: Student <student@example.invalid>");
СтрокиПисьма.Добавить("Subject: Guide fixture");
СтрокиПисьма.Добавить("Date: Sat, 03 Oct 2026 12:00:00 +0300");
СтрокиПисьма.Добавить("Message-ID: <guide-001@example.invalid>");
СтрокиПисьма.Добавить("Organization: Training");
СтрокиПисьма.Добавить("Keywords: learning, fixture");
СтрокиПисьма.Добавить("X-Guide-Code: A-01");
СтрокиПисьма.Добавить("MIME-Version: 1.0");
СтрокиПисьма.Добавить("Content-Type: text/plain; charset=us-ascii");
СтрокиПисьма.Добавить("Content-Transfer-Encoding: 7bit");
СтрокиПисьма.Добавить("");
СтрокиПисьма.Добавить("Book: 3; Pen: 1");
СтрокиПисьма.Добавить("");
ИсходныйТекст = СтрСоединить(СтрокиПисьма, Символы.ВК + Символы.ПС);
ИсходныеДанные = ПолучитьДвоичныеДанныеИзСтроки(ИсходныйТекст, КодировкаТекста.UTF8, Ложь);
Письмо = Новый ИнтернетПочтовоеСообщение;
Письмо.УстановитьИсходныеДанные(ИсходныеДанные);
Если Письмо.СтатусРазбора <> СтатусРазбораИнтернетПочтовогоСообщения.ОшибокНеОбнаружено Тогда
ВызватьИсключение "Собственное учебное письмо разобрано с ошибками";
КонецЕсли;
Сообщить(Письмо.Тема = "Guide fixture");
Сообщить(Письмо.Тексты.Количество() = 1);
Письмо.ОбработатьТексты();
ТекстоваяЧасть = Письмо.Тексты.Получить(0);
Сообщить(СтрНайти(ТекстоваяЧасть.Текст, "Book: 3; Pen: 1") > 0);
Сообщить(ТекстоваяЧасть.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст);
СырыеБайтыТекста = ТекстоваяЧасть.Данные;
Сообщить(СтрНайти(ПолучитьСтрокуИзДвоичныхДанных(СырыеБайтыТекста, "US-ASCII"), "Book: 3; Pen: 1") > 0);
ИсходныйТекстОбъекта = Письмо.ПолучитьИсходныйТекст(КодировкаТекста.UTF8);
Сообщить(СтрНайти(ИсходныйТекстОбъекта, "X-Guide-Code: A-01") > 0);Разбор по шагам
Соединяем явно приведённые строки CRLF, включая пустую границу заголовков и тела.
Конвертируем строку в байты без BOM, разбираем и проверяем СтатусРазбора до обработки текста.
ОбработатьТексты выполняет обработку частей; Данные остаются двоичными, не присваиваем readonly-свойство.
ПолучитьИсходныйТекст даёт MIME-источник, а не только красивый текст для пользователя.
Как проверить результат
Шесть сообщений Истина; тело содержит Book: 3; Pen: 1.
Статус собственного корректного источника ОшибокНеОбнаружено; при ошибке предусмотрено исключение до чтения части.
Ожидаемый результат
Разобраны MIME-заголовки, текстовая часть и исходные байты собственного письма.
На что обратить внимание
Объект письма и успешный разбор MIME не доказывают отправку, доставку, подлинность отправителя или прочтение.
На реальном повреждённом источнике возможны исключение либо статус частичного разбора: нельзя игнорировать оба пути.
Собственный ASCII-пример не доказывает корректность всех кодировок, вложений и вложенных multipart.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.