Partager via


Lecture et modification de messages dans le pipeline de transport Exchange 2013

Découvrez les classes .NET Framework que vous pouvez utiliser dans vos agents de transport Exchange 2013 pour lire, écrire et modifier des messages.

S’applique à : Exchange Server 2013

  • Classes utilisées pour lire, écrire ou modifier des messages
  • Espace de noms Des encodeurs
  • Espace de noms iCalendar
  • Espace de noms MIME
  • Espace de noms TextConverters
  • Espace de noms Tnef
  • Espace de noms vCard

À mesure que les messages passent par le pipeline de transport, votre agent de transport peut lire, écrire et convertir le contenu des messages entre différents formats de données. Par exemple, vous pouvez lire et écrire des données MIME, identifier les messages entrants au format Uuencoded ou Quoted-printable (qp), puis les convertir en standard utilisé par votre organisation, ou lire et enregistrer les informations de calendrier ou de contact associées aux messages entrants.

Vous pouvez également identifier le contenu qui représente une menace pour la sécurité et déplacer ou supprimer le contenu ou les messages qui les contiennent. par exemple, en supprimant des liens dans un message HTML.

Cet article fournit des informations sur les classes .NET Framework que vous pouvez utiliser pour lire, écrire et modifier des messages.

Attention

La plupart des propriétés et paramètres des API de conversion de contenu autorisent des valeurs suffisamment grandes pour entraîner des problèmes de performances, notamment un déni de service. Lorsque vous utilisez les API de conversion de contenu dans un agent de transport, vous devez implémenter des limites sur les tailles de valeur de propriété et de paramètre que vous prenez en charge lors de la lecture ou de l’écriture afin de limiter la consommation des ressources par votre agent.

Classes utilisées pour lire, écrire ou modifier des messages

Le tableau suivant répertorie les classes .NET Framework que vous pouvez utiliser pour lire, écrire et modifier des messages électroniques.

Espaces de noms de traitement des messages .NET Framework

Espace de noms .NET Framework Classes
Microsoft.Exchange.Data.Mime.Encoders
Contient des classes pour l’encodage et le décodage en mémoire, une classe de flux d’encodeur qui accepte l’une des classes d’encodeur ou de décodeur contenues dans une énumération associée, et la classe de base ByteEncoder et la classe d’exception ByteEncoderException pour les encodeurs et les décodeurs.
Microsoft.Exchange.Data.ContentTypes.iCalendar
Contient des types qui vous permettent de lire et d’écrire des flux de données qui contiennent des informations de calendrier. Inclut un lecteur et un enregistreur de calendrier, un objet d’exception, un objet de périodicité, ainsi que des structures et des énumérations qui vous aident à retourner des informations de propriété sur les éléments de calendrier.
Microsoft.Exchange.Data.Mime
Contient des classes, des structures, des énumérations et des délégués que vous pouvez utiliser pour créer, lire, écrire, parcourir, encoder et décoder des données MIME. Inclut un lecteur et un enregistreur basés sur des flux qui vous donnent un accès en lecture et en écriture avant uniquement aux flux de données MIME, ainsi qu’aux méthodes et classes DOM que vous pouvez utiliser sur les documents MIME.
Microsoft.Exchange.Data.TextConverters
Contient des classes, des structures, des énumérations et des délégués qui vous permettent de lire et d’écrire un flux de données et d’effectuer des conversions entre des types de données spécifiques ; par exemple, HTML au format RTF (Rich Text Format). Les convertisseurs de texte vous permettent de modifier le format d’un flux de document d’un formulaire à un autre, ainsi que de supprimer de manière sélective les éléments d’un document susceptibles de poser un risque pour la sécurité.
Microsoft.Exchange.Data.ContentTypes.Tnef
Contient un lecteur et un enregistreur de flux avant uniquement, une classe d’exception, ainsi que des structures et des énumérations qui facilitent la lecture et l’écriture de données TNEF (Transport Neutral Encapsulation Format).
Microsoft.Exchange.Data.ContentTypes.vCard
Contient un lecteur et un enregistreur de flux avant uniquement, une classe d’exception, ainsi que des structures et des énumérations qui facilitent la lecture et l’écriture de données de contact au format vCard.

Espace de noms Des encodeurs

L’espace de noms Encoders contient des classes pour l’encodage et le décodage en mémoire. Ceux-ci héritent de la classe de base ByteEncoder . Les classes encodent et décodent pour Base64, BinHex, Quoted-printable (qp) et Unix-to-Unix (Uu). Les classes suivantes sont utilisées pour l’encodage et le décodage en mémoire :

Les encodeurs et les décodeurs héritent de la classe de base ByteEncoder et utilisent la classe d’exception ByteEncoderException pour la gestion des erreurs.

En outre, l’espace de noms contient la classe MacBinaryHeader , qui identifie les fichiers encodés MacBinary et lit l’en-tête de fichier associé.

Enfin, la classe EncoderStream effectue une conversion sur un flux de données au lieu d’un objet en mémoire. Cette classe accepte l’une des classes d’encodeur ou de décodeur et lit ou écrit en fonction de l’énumération EncoderStreamAccess associée.

Espace de noms iCalendar

L’espace de noms iCalendar fournit un lecteur et un enregistreur avant uniquement pour les données iCalendar, en plus de prendre en charge les structures et les classes pour la création, l’accès et la modification de flux iCalendar.

Les classes CalendarReader et CalendarWriter sont utilisées pour lire et écrire des données de flux iCalendar.

CalendarReader prend un stream lisible comme argument pour ses constructeurs. Vous pouvez ensuite utiliser les méthodes ReadFirstChildComponent, ReadNextSiblingComponent et ReadNextComponent pour accéder séquentiellement aux composants iCalendar dans le flux de données. En fonction de la valeur que vous avez définie pour la propriété ComplianceMode , les erreurs dans le flux iCalendar entraînent la levée d’une exception ou la propriété ComplianceStatus sur une valeur autre que Compliant. Vous pouvez vérifier cette propriété pour détecter les problèmes liés aux données iCalendar entrantes.

La classe CalendarWriter prend un Stream accessible en écriture comme argument pour ses constructeurs.

Espace de noms MIME

L’espace de noms MIME fournit des classes qui vous permettent de créer, d’accéder et de modifier des documents MIME. Vous pouvez utiliser des documents MIME à l’aide d’une méthode basée sur un flux ou DOM.

Classe MimeDocument et DOM MIME

La classe MimeDocument permet l’accès DOM à un document MIME. Utilisez des objets de ce type lorsque vous disposez de la mémoire disponible pour charger un DOM entier et que vous devez disposer d’un accès aléatoire aux en-têtes et au contenu du message.

Vous chargez des données dans un objet MimeDocument à l’aide des méthodes GetLoadStream ou Load . Vous pouvez ensuite parcourir la hiérarchie DOM et créer, modifier ou supprimer des données MIME. Après avoir modifié les données MIME, vous pouvez les écrire dans un flux à l’aide de l’une des méthodes WriteTo .

La figure suivante montre la structure des données au sein d’un objet MimeDocument .

Figure 1. Structure des objets MimeDocument

Architecture DOM MIME

Classes MimeReader et MimeWriter et analyse MIME basée sur les flux

Les classes MimeReader et MimeWriter permettent l’accès en avant uniquement aux flux MIME. Utilisez ces classes lorsque vous n’avez pas besoin de modifier les données MIME qui nécessitent des données qui ont déjà été lues ou écrites. Par exemple, si vous souhaitez imprimer des messages qui correspondent à un format prédéfini, la classe MimeWriter peut être idéale.

La classe MimeDocument encapsule un DOM. Les classes MimeReader et MimeWriter représentent les ordinateurs d’état. Leurs états changent en fonction de l’entrée reçue et des méthodes appelées. Les figures 2 à 5 sont des diagrammes de transition d’état simplifiés qui montrent, pour l’objet MimeReader , quelles méthodes sont valides pour appeler à partir de chaque état et l’état qui en résulte.

Pour utiliser ces diagrammes, suivez les flèches d’un état à l’autre, en notant les appels de méthode ou les valeurs de retour qui entraînent la modification de l’état. Par exemple, dans le premier diagramme, supposons que vous êtes au début du flux qui appartient au MimeReader que vous avez créé. Pour accéder à l’état En-têtes de composant, appelez l’un des éléments ReadNextPart ou ReadFirstChildPart, dans cet ordre. S’il existe des en-têtes (autrement dit, si le MIME est bien formé), vous entrez dans l’état En-têtes de partie. Sinon, une exception est levée.

Figure 2. Diagramme de transition d’état simplifié pour les objets MimeReader

Diagramme d’état MimeReader

Remarque

Les figures 3, 4 et 5 s’étendent sur les états indiqués dans chacun des diagrammes précédents.

Figure 3. Extension de l’état des en-têtes de composant à partir de la figure 2

Développement de l’état « En-têtes de composant ».

Figure 4. Extension de l’état d’en-tête à partir de la figure 3 lorsqu’un paramètre a été rencontré dans un en-tête

Extension de l’état « En-têtes de composants » lorsqu’un paramètre a été rencontré dans un en-tête

Remarque

L’état représenté par la figure 5 est récursif en ce que, si un groupe d’adresses est rencontré, vous pouvez utiliser la propriété GroupRecipientReader pour lire les adresses du groupe.

Figure 5. Extension de l’état d’en-tête à partir de la figure 3 lorsqu’une adresse ou un groupe d’adresses est rencontré

Développement de l’état « En-tête » pour l’adresse ou le groupe

Les figures 6 et 7 montrent des diagrammes de transition d’état simplifiés pour l’objet MimeWriter .

Remarque

La figure 7 se développe sur l’état Des en-têtes de partie indiqué dans la figure 6.

Figure 6. Diagramme de transition d’état simplifié pour les objets MimeWriter

Diagramme de transition d’état pour MimeWriter

Figure 7. Extension de l’état des en-têtes de composant à partir de la figure 6

Développement du diagramme de transition d’état pour MimeWriter

Espace de noms TextConverters

L’espace de noms TextConverters contient des types qui prennent en charge la conversion du contenu des messages électroniques. Ces types peuvent effectuer une conversion de page de codes, supprimer du code HTML qui n’est pas sécurisé et effectuer d’autres transformations sur les corps des messages électroniques. L’espace de noms Microsoft.Exchange.Data.TextConverters inclut les classes suivantes qui dérivent de la classe abstraite TextConverter :

Ces convertisseurs de texte vous permettent de modifier le format d’un flux de document ou de supprimer des éléments qui ne sont pas sécurisés d’un document HTML. Ces classes peuvent être utilisées seules pour effectuer une conversion à l’aide d’un seul appel à l’une des méthodes Convert dans la classe de base TextConverter , ou elles peuvent être passées à un constructeur du convertisseur, qui l’utilise pour effectuer des lectures ou des écritures converties.

Les fonctionnalités héritées de la classe de base sont utiles pour effectuer des conversions lorsque vous disposez de suffisamment d’espace pour stocker le document d’origine et sa sortie convertie, ou lorsque vous souhaitez stocker les résultats de la conversion. La méthode Convert prend des flux d’entrée et de sortie, des lecteurs de texte ou des enregistreurs de texte, et convertit le contenu de l’entrée en sortie associée.

L’espace de noms comprend également les classes de lecteur de texte, d’enregistreur et de flux suivantes :

Ils sont utilisés pour effectuer des conversions lorsque vous n’avez pas de place pour stocker l’original ou sa sortie convertie, lorsque vous recevez l’entrée d’un flux ou envoyez la sortie à un flux, ou lorsque vous souhaitez que la sortie soit uniquement à des fins d’indexation ou de recherche et que vous ne souhaitez donc pas stocker le résultat d’une conversion.

Espace de noms Tnef

L’espace de noms Tnef contient des classes et des types qui permettent la lecture et l’écriture de données TNEF basées uniquement sur les flux. TNEF est un format de données utilisé pour encapsuler les propriétés MAPI pour les clients qui ne peuvent pas interpréter MAPI.

Les classes TnefReader et TnefWriter fournissent les fonctionnalités de base de l’espace de noms Microsoft.Exchange.Data.ContentTypes.Tnef .

La classe TnefReader prend un flux lisible comme argument pour ses constructeurs. Vous utilisez ensuite la méthode ReadNextAttribute pour lire séquentiellement les attributs dans le flux TNEF. Une fois que vous avez lu un attribut, vous pouvez accéder aux informations sur l’attribut en utilisant l’une des propriétés en lecture seule sur l’objet TnefReader , en plus d’obtenir un TnefPropertyReader pour lire la propriété actuelle. Vous pouvez également accéder directement à l’attribut actuel à l’aide de la méthode ReadAttributeRawValue .

La classe TnefWriter prend un stream accessible en écriture comme argument pour ses constructeurs. La classe TnefWriter fournit plusieurs façons d’écrire des données dans ce flux.

Espace de noms vCard

L’espace de noms vCard contient des classes, des structures et des énumérations utilisées pour lire et écrire les informations de contact contenues dans un message électronique au format de données vCard. L’espace de noms contient un lecteur de contact et un enregistreur, une classe d’exception, un lecteur de propriétés, un lecteur de paramètres et des énumérations de prise en charge qui vous permettent de lire les données vCard associées à un e-mail.

Voir aussi