ИнтернетПочтовоеСообщение.ПолучитьИсходныеДанные

Методы · GetSourceData

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

Синтаксис

ПолучитьИсходныеДанные()
Полное описание, параметры и ограничения

ИнтернетПочтовоеСообщение.ПолучитьИсходныеДанные (InternetMailMessage.GetSourceData)

ИнтернетПочтовоеСообщение (InternetMailMessage)

ПолучитьИсходныеДанные (GetSourceData)

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

Синтаксис:
ПолучитьИсходныеДанные()
Возвращаемое значение:
Тип: ДвоичныеДанные.

Описание:

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

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

Тонкий клиент, сервер, толстый клиент, внешнее соединение.

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

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

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

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

Увидеть, почему MIME-байты не являются полной копией объекта

ПолучитьИсходныеДанные формирует представление для передачи по почте. По локальной справке слепые копии в это представление не входят.

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

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. В учебной базе выполните код на сервере. Письмо создаётся и разбирается в памяти; профиль почты, пароль, SMTP/IMAP и вызов Послать не нужны.

  2. Все адреса заданы на учебном домене example.invalid. Не заменяйте их реальными адресами и не добавляйте отправку при первой проверке.

  3. Письмо о двух учебных товарах не содержит персональных данных, реальных заказов и внешних HTML-ресурсов. Его текст не является счётом или подтверждением доставки.

Письмо = Новый ИнтернетПочтовоеСообщение;
Письмо.Кодировка = "UTF-8";
Письмо.Отправитель = "guide@example.invalid";
Письмо.ИмяОтправителя = "Учебный магазин";
Письмо.Получатели.Добавить("student@example.invalid");
Письмо.Тема = "Учебные товары";
Письмо.Тексты.Добавить("Книга: 3; Ручка: 1", ТипТекстаПочтовогоСообщения.ПростойТекст);
Письмо.СлепыеКопии.Добавить("archive@example.invalid");
Сообщить(Письмо.СлепыеКопии.Количество() = 1);
БайтыMIME = Письмо.ПолучитьИсходныеДанные();
Копия = Новый ИнтернетПочтовоеСообщение;
Копия.УстановитьИсходныеДанные(БайтыMIME);
Если Копия.СтатусРазбора <> СтатусРазбораИнтернетПочтовогоСообщения.ОшибокНеОбнаружено Тогда
    ВызватьИсключение "Собственная MIME-копия разобрана с ошибками";
КонецЕсли;
Сообщить(БайтыMIME.Размер() > 0);
Сообщить(Копия.Тема = "Учебные товары");
Сообщить(Копия.СлепыеКопии.Количество() = 0);
Сообщить(Письмо.СлепыеКопии.Количество() = 1);

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

  1. У исходного объекта есть одна собственная слепая копия.

  2. Получаем MIME-байты и разбираем их в новом объекте; проверки статуса обязательны.

  3. Основная тема восстановлена, но слепой адрес в копии отсутствует. Исходный объект всё ещё содержит его.

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

  1. Пять сообщений Истина: источник с одной BCC, MIME непустой, тема сохранена, копия без BCC, источник не изменён.

  2. Ни отправки, ни раскрытия слепого адреса обычным адресатам здесь нет.

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

На конкретном различии показано, что MIME-roundtrip не гарантирует эквивалентность объектов.

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

  1. Объект письма и успешный разбор MIME не доказывают отправку, доставку, подлинность отправителя или прочтение.

  2. Не используйте MIME как единственный архив внутренней маршрутизации, статусов сервера и всех свойств объекта.

  3. Прочие особенности MIME-разбора могут тоже изменить представление; это не универсальный сериализатор 1С.

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

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

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

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

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