Чтение и изменение сообщений в конвейере Exchange 2013 г.

Узнайте о классах платформа .NET Framework, которые можно использовать в транспортных агентах Exchange 2013 г. для чтения, записи и изменения сообщений.

Применяется к: Exchange Server 2013 г.

  • Классы, используемые для чтения, записи или изменения сообщений
  • Пространство имен кодаторов
  • пространство имен iCalendar
  • Пространство имен MIME
  • Пространство имен TextConverters
  • Пространство имен Tnef
  • пространство имен vCard

По мере передачи сообщений по транспортному конвейеру транспортный агент может читать, записывать и преобразовывать содержимое сообщений в различных форматах данных. Например, можно читать и записывать данные MIME, определять входящие сообщения, которые находятся в формате Uuencoded или Quoted-printable (qp), а затем преобразовать их в стандарт, используемый вашей организацией, или прочитать, а затем сохранить календарь или контактные данные, связанные с входящие сообщения.

Вы также можете определить содержимое, представляю которое представляет угрозу безопасности, и переместить или удалить содержимое или сообщения, содержащие их; например, путем удаления ссылок в HTML-сообщении.

В этой статье приводится информация платформа .NET Framework классов, которые можно использовать для чтения, записи и изменения сообщений.

Внимание!

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

Классы, используемые для чтения, записи или изменения сообщений

В следующей таблице перечислены платформа .NET Framework классы, которые можно использовать для чтения, записи и изменения сообщений электронной почты.

платформа .NET Framework области имен обработки сообщений

платформа .NET Framework пространства имен занятия;
Microsoft. Exchange. Data.Mime.Encoders
Содержит классы для кодирования и декодирования в памяти, класс потока кодирования, который принимает один из классов кодера или декодера, содержащихся в связанном переумеществе, и базовый класс ByteEncoder и класс исключения ByteEncoderException для кодеров и декодеров.
Microsoft. Exchange. Data.ContentTypes.iCalendar
Содержит типы, позволяющие читать и записывать потоки данных, содержащие сведения о календаре. Включает в себя считыватель календаря и писатель, объект исключения, объект повторяемости, а также структуры и список, которые помогают возвращать сведения о свойствах элементов календаря.
Microsoft. Exchange. Data.Mime
Содержит классы, структуры, переумывания и делегаты, которые можно использовать для создания, чтения, записи, обхода, кодирования и декодирования данных MIME. Включает в себя потоковый читатель и писатель, который предоставляет доступ к потокам данных MIME только для чтения и записи, а также методы и классы на основе DOM, которые можно использовать в документах MIME.
Microsoft. Exchange. Data.TextConverters
Содержит классы, структуры, переучеты и делегаты, которые позволяют читать и записывать поток данных и выполнять преобразования между определенными типами данных; например, HTML-формат с богатым текстом (RTF). Текстовые преобразователи позволяют изменять формат потока документов из одной формы в другую, а также выборочно удалять элементы документа, которые могут представлять угрозу безопасности.
Microsoft. Exchange. Data.ContentTypes.Tnef
Содержит только считыватель и писатель потокового потока, класс исключений, а также структуры и перемеры, которые облегчают чтение и написание данных формата инкапсуляции транспортного нейтрального формата (TNEF).
Microsoft. Exchange. Data.ContentTypes.vCard
Содержит только считыватель и писатель потокового потока, класс исключений, а также структуры и перемеры, облегчающие чтение и написание контактных данных в формате vCard.

Пространство имен кодаторов

Пространство имен кодаторов содержит классы для кодирования и декодирования в памяти. Они наследуются базовым классом ByteEncoder. Классы кодируют и декодируют для Base64, BinHex, Quoted-printable (qp) и Unix-to-Unix (Uu). Для кодирования и декодирования в памяти используются следующие классы:

Кодаторы и декодеры наследуют базовый класс ByteEncoder и используют класс исключения ByteEncoderException для обработки ошибок.

Кроме того, пространство имен содержит класс MacBinaryHeader, который идентифицирует закодированные файлы MacBinary и читает связанные с ними заголовок файлов.

Наконец, класс EncoderStream выполняет преобразование в потоке данных вместо объекта в памяти. Этот класс принимает один из классов коддера или декодера и читает или пишет согласно связанному переучету EncoderStreamAccess.

пространство имен iCalendar

Пространство имен iCalendar предоставляет только для чтения и записи данных iCalendar, а также поддерживает структуры и классы для создания, доступа и изменения потоков iCalendar.

Классы CalendarReader и CalendarWriter используются для чтения и записи данных потока iCalendar.

CalendarReader принимает читаемый поток в качестве аргумента для своих конструкторов. Затем можно использовать методы ReadFirstChildComponent, ReadNextSiblingComponentи ReadNextComponent для последовательного доступа к компонентам iCalendar в потоке данных. В зависимости от значения, заданного для свойства ComplianceMode, ошибки в потоке iCalendar могут привести к тому, что будет выброшено исключение или свойство ComplianceStatus будет задано значение, не комплаенсирующее . Вы можете проверить это свойство, чтобы обнаружить любые проблемы с входящие данные iCalendar.

Класс CalendarWriter принимает writable Stream в качестве аргумента для своих конструкторов.

Пространство имен MIME

Пространство имен MIME предоставляет классы, позволяющие создавать, получать доступ и изменять документы MIME. Вы можете работать с документами MIME с помощью метода на основе потока или на основе DOM.

Класс MimeDocument и DOM MIME

Класс MimeDocument позволяет DOM-доступ к документу MIME. Используйте объекты этого типа, если у вас есть доступная память для загрузки всего DOM, и вы должны иметь случайный доступ к загонам и содержимому сообщения.

Данные загружаются в объект MimeDocument с помощью методов GetLoadStream или Load. Затем можно ходить по иерархии DOM и создавать, изменять или удалять данные MIME. После изменения данных MIME их можно записать в поток с помощью одного из методов WriteTo.

На следующем рисунке показана структура данных в объекте MimeDocument.

Рис. 1. Структура объектов MimeDocument

Архитектура модели DOM MIME

Классы MimeReader и MimeWriter и разметка MIME на основе потоковой передачи

Классы MimeReader и MimeWriter позволяют получать доступ только к потокам MIME. Используйте эти классы, если вам не нужно менять данные MIME, которые требуют данных, которые уже прочитано или записано. Например, если вы хотите распечатать сообщения, подходящие предварительному формату, класс MimeWriter может быть идеальным.

Класс MimeDocument инкапсулирует DOM. Классы MimeReader и MimeWriter представляют государственные компьютеры. Их состояния изменяются в зависимости от полученных входных данных и используемых методов. Рисунки от 2 до 5 — это упрощенные схемы перехода состояния, которые показывают объект MimeReader, методы которого допустимы для вызова из каждого состояния и состояния, которое приведет к этому.

Чтобы использовать эти схемы, следуйте стрелкам из одного состояния в следующее, заметь, что метод вызывает или возвращает значения, которые вызывают изменение состояния. Например, на первой схеме предположим, что вы находитесь в начале потока, который принадлежит созданному MimeReader. Чтобы добраться до состояния Главы части, в этом порядке вызовите один из readNextPart или ReadFirstChildPart. Если есть загонщики (то есть, если MIME хорошо сформирован), введите состояние Заглавные части. В противном случае будет отброшено исключение.

Рис. 2. Упрощенная схема перехода состояния для объектов MimeReader

Схема состояния MimeReader

Примечание

Цифры 3, 4 и 5 расширяют состояния, показанные на каждой из предыдущих схем.

Рис. 3. Расширение состояния заглавных окантовок части с рисунка 2

Расширенное представление состояния "Заголовки части"

Рис. 4. Расширение состояния Header с рисунка 3 при столкновении параметра в загонах

Расширение состояния "Заглавные части" при столкновении параметра в загонах

Примечание

Состояние, представленное рис. 5, является рекурсивным, так как при столкновении с адресной группой можно использовать свойство GroupRecipientReader для чтения адресов в группе.

Рис. 5. Расширение состояния Header с рисунка 3 при столкновении с адресом или группой адресов

Расширенное представление состояния "Заголовок" для адреса группы

На рисунках 6 и 7 покажут упрощенные схемы перехода состояния для объекта MimeWriter.

Примечание

На рисунке 7 расширяется состояние заглавов части, показанное на рисунке 6.

Рис. 6. Упрощенная схема перехода состояния для объектов MimeWriter

Схема смены состояния для MimeWriter

Рис. 7. Расширение состояния заглавных окантовок части с рисунка 6

Расширенная схема смены состояния для MimeWriter

Пространство имен TextConverters

Пространство имен TextConverters содержит типы, поддерживают преобразование содержимого сообщений электронной почты. Эти типы могут выполнять преобразование страницы кода, удалять не защищенный HTML и выполнять другие преобразования в органах сообщений электронной почты. Microsoft.Exchange. Пространство имен Data.TextConverters включает следующие классы, которые вытекают из абстрактного класса TextConverter:

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

Функциональные возможности, унаследованные от базового класса, полезны для выполнения преобразований, если у вас достаточно места для хранения исходного документа и его преобразованного вывода или для хранения результатов преобразования. Метод Convert принимает потоки ввода и вывода, считыватели текста или текстовые сочинители и преобразует содержимое ввода в связанные выходные данные.

Кроме того, в пространство имен включены следующие классы чтения текста, записи и потоковой передачи:

Они используются для выполнения преобразований, когда у вас нет места для хранения исходного или преобразованного вывода, при поступлении ввода или отправке вывода в поток или когда вы хотите получить выход только для индексации или поиска и поэтому не хотите хранить результат преобразования.

Пространство имен Tnef

Пространство имен Tnef содержит классы и типы, которые позволяют читать и писать данные TNEF только на основе потоков. TNEF — это формат данных, используемый для инкапсулации свойств MAPI для клиентов, которые не могут интерпретировать MAPI.

Классы TnefReader и TnefWriter предоставляют основные функции в Microsoft.Exchange. Пространство имен Data.ContentTypes.Tnef.

Класс TnefReader принимает читаемый поток в качестве аргумента для своих конструкторов. Затем метод ReadNextAttribute используется для последовательного чтения атрибутов в потоке TNEF. После прочтенного атрибута можно получить доступ к сведениям о атрибуте с помощью любого свойства только для чтения на объекте TnefReader, а также получить доступ к TnefPropertyReader для чтения текущего свойства. Вы также можете напрямую получить доступ к текущему атрибуту с помощью метода ReadAttributeRawValue.

Класс TnefWriter принимает writable Stream в качестве аргумента для своих конструкторов. Класс TnefWriter предоставляет несколько способов записи данных в этот поток.

пространство имен vCard

Пространство имен vCard содержит классы, структуры и переумерия, используемые для чтения и записи контактных данных, содержащихся в сообщении электронной почты, которое находится в формате данных vCard. Пространство имен содержит считыватель контактов и писатель, класс исключений, считыватель свойств, считыватель параметров и поддерживающие перемеры, которые позволяют читать данные vCard, связанные с сообщением электронной почты.

См. также