
- Catégories des propriétés MAPI
- Lister toutes les propriétés MAPI
- Lister les propriétés MAPI nommées
- Récupérer des propriétés par descripteur
- Récupérer des propriétés par tag
- Utiliser la méthode GetProperty
- Travailler avec des propriétés personnalisées
Gérer les données des e-mails de manière programmatique peut être complexe, en particulier lorsqu’il s’agit des propriétés de l’interface de programmation d’applications de messagerie (MAPI). Ces propriétés sont des attributs ou des métadonnées associées à des objets MAPI tels que des messages, des dossiers, des destinataires et d’autres composants d’un système de messagerie. Ces propriétés fournissent des informations détaillées sur l’objet, comme l’objet d’un e-mail, l’adresse de l’expéditeur, la date à laquelle un e-mail a été envoyé, et plus encore. Les propriétés MAPI sont largement utilisées dans les clients de messagerie et d’autres applications de messagerie pour gérer et manipuler les données des e-mails. Cet article explore diverses techniques pour accéder, énumérer et manipuler les propriétés MAPI à l’aide d’Aspose.Email pour .NET.
API .NET pour gérer les propriétés MAPI en C#
Aspose.Email pour .NET offre un support complet pour le traitement des propriétés de l’interface de programmation d’applications de messagerie, permettant aux développeurs de gérer et de manipuler les données des e-mails avec un contrôle détaillé. C’est également une API étendue qui permet aux développeurs d’équiper leurs applications de messagerie de fonctionnalités robustes pour le traitement des messages et d’autres tâches connexes.
En utilisant Aspose.Email pour .NET, les développeurs peuvent créer des solutions sophistiquées de gestion et de traitement des e-mails. Pour commencer à utiliser la bibliothèque, vous pouvez la télécharger depuis le site Web d’Aspose ou NuGet et l’intégrer dans votre projet.
Catégories des propriétés MAPI
Assurez-vous d’avoir Aspose.Email dans votre projet et commençons. Les propriétés MAPI peuvent être catégorisées en trois types principaux : propriétés standard, propriétés nommées et propriétés personnalisées (définies par l’utilisateur). Chaque catégorie sert un objectif différent et fournit des niveaux de flexibilité et de contrôle variés pour les développeurs travaillant avec des données d’e-mail. Voici un aperçu de chaque type :
Propriétés standard
Définies par la spécification MAPI, elles ont des balises de propriété prédéfinies et sont couramment utilisées pour les attributs standards des objets de messagerie. Par exemple :
- PR_SUBJECT: L’objet du message.
- PR_SENDER_NAME: Le nom de l’expéditeur.
- PR_DELIVER_TIME: La date et l’heure auxquelles le message original a été livré.
Propriétés nommées
Identifiées par un GUID et un nom de chaîne ou un identifiant entier, ces propriétés permettent une catégorisation et une identification plus spécifiques au-delà des propriétés standard.
Propriétés personnalisées (définies par l’utilisateur)
Définies par les développeurs, elles étendent la fonctionnalité des objets MAPI, permettant un traitement des données personnalisé et spécifique à l’application.
Lister toutes les propriétés MAPI
Pour lister toutes les propriétés MAPI dans un message, nous allons utiliser la méthode MapiMessage.Load pour charger le message et itérer sur ses propriétés. L’exemple de code ci-dessous démontre comment charger un message MAPI, parcourir ses propriétés et imprimer des informations détaillées sur chaque propriété à l’aide d’Aspose.Email pour .NET :
- Chargez le fichier de message MAPI depuis le chemin spécifié.
- Itérez sur la collection
msg.Properties.Values
pour accéder à chaque propriété. - Pour chaque propriété MAPI, imprimez sa balise, son nom canonique et son type de données :
- La propriété Tag fournit l’identifiant unique de la propriété MAPI.
- La propriété Descriptor.CanonicalName donne le nom lisible par l’homme de la propriété.
- La propriété Descriptor.DataType indique le type de données de la propriété.
// Load the email message from a file | |
var msg = MapiMessage.Load(@"D:\Aspose\Files\msg\test.msg"); | |
// Iterate through all MAPI properties and print their details | |
foreach (var mapiProperty in msg.Properties.Values) | |
{ | |
Console.WriteLine($"Tag: {mapiProperty.Tag}"); | |
Console.WriteLine($"Canonical Name: {mapiProperty.Descriptor.CanonicalName}"); | |
Console.WriteLine($"Data Type: {mapiProperty.Descriptor.DataType}"); | |
} |
Lister les propriétés MAPI nommées
Alors que les propriétés MAPI régulières sont identifiées par une balise de propriété de 16 bits composée d’un type de propriété et d’un identifiant de propriété, les propriétés nommées sont identifiées par une combinaison d’un GUID et soit d’un nom de chaîne soit d’un identifiant entier :
- GUID (Identifiant Unique Global) : Un identifiant unique qui garantit que l’ensemble de propriétés est unique. Ce GUID est généralement fourni par le développeur.
- Nom ou ID :
- Un nom de chaîne (sensible à la casse).
- Un identifiant entier de 32 bits.
Le code suivant démontre comment utiliser Aspose.Email pour .NET pour itérer à travers les propriétés MAPI nommées d’un message et imprimer des informations détaillées en fonction du type de descripteur de la propriété :
- Itérez à travers chaque propriété nommée en accédant à la collection ‘NamedProperties.Values’ de l’objet MapiMessage chargé pour obtenir toutes les propriétés MAPI nommées.
- Vérifiez si le descripteur de la propriété nommée actuelle est de type PidNamePropertyDescriptor. Si c’est le cas, cast le descripteur à PidNamePropertyDescriptor. Imprimez le GUID, le nom canonique et le type de données de la propriété.
- Vérifiez si le descripteur de la propriété nommée actuelle est de type PidLidPropertyDescriptor. Si c’est le cas, cast le descripteur à PidLidPropertyDescriptor. Imprimez le GUID, le nom canonique, l’ID Long et le type de données de la propriété.
foreach (MapiNamedProperty mapiNamedProperty in msg.NamedProperties.Values) | |
{ | |
if (mapiNamedProperty.Descriptor is PidNamePropertyDescriptor pidNamePropertyDescriptor) | |
{ | |
Console.WriteLine($"GUID: {pidNamePropertyDescriptor.PropertySet}"); | |
Console.WriteLine($"Canonical Name: {pidNamePropertyDescriptor.CanonicalName}"); | |
Console.WriteLine($"Data Type: {pidNamePropertyDescriptor.DataType}"); | |
} | |
if (mapiNamedProperty.Descriptor is PidLidPropertyDescriptor pidLidPropertyDescriptor) | |
{ | |
Console.WriteLine($"GUID: {pidLidPropertyDescriptor.PropertySet}"); | |
Console.WriteLine($"Canonical Name: {pidLidPropertyDescriptor.CanonicalName}"); | |
Console.WriteLine($"Long ID: {pidLidPropertyDescriptor.LongId}"); | |
Console.WriteLine($"Data Type: {pidLidPropertyDescriptor.DataType}"); | |
} | |
} |
Ainsi, nous avons imprimé des attributs spécifiques tels que PropertySet
, CanonicalName
, DataType
, et LongId
en fonction du type de descripteur (PidNamePropertyDescriptor
ou PidLidPropertyDescriptor
).
Récupérer des propriétés par descripteur
Récupérer des propriétés par descripteur est un moyen simple d’accéder à des propriétés MAPI spécifiques sans itérer à travers l’ensemble de la collection de propriétés. Aspose.Email pour .NET fournit un moyen pratique de récupérer des propriétés à l’aide de la KnownPropertyList. L’exemple de code ci-dessous démontre comment récupérer et imprimer les détails d’une propriété spécifique, comme l’InternetMessageId, si elle existe.
- Accédez à la propriété InternetMessageId à partir de la collection Properties de l’objet MapiMessage en utilisant la KnownPropertyList.
- Vérifiez que la propriété n’est pas nulle pour vous assurer qu’elle existe dans le message.
- Imprimez les détails de la propriété récupérée : Tag, nom canonique et type de données.
- Si le type de données de la propriété est une chaîne, utilisez la méthode GetString pour récupérer la valeur de la propriété et l’imprimer.
// Retrieve and print the InternetMessageId property if it exists | |
if (msg.Properties[KnownPropertyList.InternetMessageId] != null) | |
{ | |
var property = msg.Properties[KnownPropertyList.InternetMessageId]; | |
Console.WriteLine($"Tag: {property.Tag}"); | |
Console.WriteLine($"Canonical Name: {property.Descriptor.CanonicalName}"); | |
Console.WriteLine($"Data Type: {property.Descriptor.DataType}"); | |
// Retrieve and print the property value if it is a string | |
if (property.Descriptor.DataType == PropertyDataType.String) | |
{ | |
var propertyValue = property.GetString(); | |
Console.WriteLine($"Value: {propertyValue}"); | |
} | |
} |
Récupérer des propriétés par tag
Un tag de propriété est un identifiant de 32 bits qui identifie de manière unique une propriété MAPI. Il se compose d’un ID de propriété et d’un type de propriété. En utilisant des tags de propriété, vous pouvez accéder directement à des propriétés spécifiques au sein d’un message MAPI. L’exemple de code ci-dessous démontre comment récupérer et imprimer les détails d’une propriété spécifique, comme PR_HASATTACH, si elle existe.
- Utilisez le MapiPropertyTag pour accéder directement à la propriété PR_HASATTACH à partir de la collection Properties de l’objet MapiMessage.
- Vérifiez que la propriété n’est pas nulle pour vous assurer qu’elle existe dans le message.
- Imprimez les détails de la propriété récupérée : Tag et type de données.
- Si le type de données de la propriété est booléen, utilisez la méthode GetBoolean pour récupérer la valeur de la propriété et imprimez si le message a des pièces jointes.
// Retrieve and print the PR_HASATTACH property if it exists | |
if (msg.Properties[MapiPropertyTag.PR_HASATTACH] != null) | |
{ | |
var property = msg.Properties[MapiPropertyTag.PR_HASATTACH]; | |
Console.WriteLine($"Tag: {property.Tag}"); | |
Console.WriteLine($"Data Type: {property.DataType}"); | |
// Retrieve and print the property value if it is a boolean | |
if (property.DataType == (int)MapiPropertyType.PT_BOOLEAN) | |
{ | |
var propertyValue = property.GetBoolean(); | |
Console.WriteLine($"Has Attachments: {propertyValue}"); | |
} | |
} |
Utiliser la méthode GetProperty
La méthode GetProperty simplifie le processus de récupération des propriétés régulières et nommées d’un message MAPI. Cette méthode vous permet d’accéder directement à une propriété par son descripteur ou son tag sans vérifier manuellement la collection de propriétés. L’exemple de code ci-dessous démontre comment utiliser la méthode GetProperty pour accéder à des propriétés MAPI spécifiques :
- Utilisez la méthode GetProperty pour accéder directement à la propriété CurrentVersionName de la classe KnownPropertyList.
- Vérifiez que la propriété n’est pas nulle pour vous assurer qu’elle existe dans le message.
- Utilisez la méthode GetString pour récupérer la valeur de la propriété et l’imprimer.
// Retrieve and print the CurrentVersionName property | |
var namedProperty = msg.GetProperty(KnownPropertyList.CurrentVersionName); | |
if (namedProperty != null) | |
{ | |
Console.WriteLine($"Current Version Name: {namedProperty.GetString()}"); | |
} |
Ici, GetProperty
est utilisé pour accéder directement à la propriété CurrentVersionName
.
Travailler avec des propriétés personnalisées
Les propriétés MAPI personnalisées sont des propriétés supplémentaires qui ne font pas partie de l’ensemble prédéfini des propriétés MAPI. Elles sont créées pour contenir des données spécifiques à l’application et sont définies par le développeur. En permettant aux développeurs de définir et d’utiliser des propriétés supplémentaires, MAPI fournit un moyen flexible et puissant de stocker et de gérer des données personnalisées au sein des applications de messagerie. Les propriétés personnalisées sont des propriétés nommées (utilisées avec un GUID et un nom de chaîne). Aspose.Email introduit une approche que vous pouvez utiliser pour récupérer toutes les propriétés personnalisées définies dans le message. Cela est réalisé avec la méthode GetCustomProperties. L’exemple de code ci-dessous démontre comment récupérer et imprimer toutes les propriétés personnalisées définies dans un message MAPI :
- Utilisez la méthode GetCustomProperties pour obtenir une collection de toutes les propriétés personnalisées définies dans le message.
- Itérez à travers chaque propriété personnalisée dans la collection récupérée.
- Imprimez les détails de la propriété : Tag, nom canonique et type de données.
// Retrieve and print custom properties | |
var customProperties = msg.GetCustomProperties(); | |
foreach (var customProperty in customProperties) | |
{ | |
Console.WriteLine($"Tag: {customProperty.Tag}"); | |
Console.WriteLine($"Canonical Name: {customProperty.Descriptor.CanonicalName}"); | |
Console.WriteLine($"Data Type: {customProperty.Descriptor.DataType}"); | |
} |
Conclusion
Cet article a exploré diverses techniques pour accéder, énumérer et manipuler les propriétés MAPI à l’aide d’Aspose.Email pour .NET. Aspose.Email fournit un support complet pour le traitement de ces propriétés, permettant aux développeurs de gérer et de manipuler les données des e-mails avec un contrôle détaillé. En utilisant cette bibliothèque, les développeurs peuvent créer des solutions sophistiquées de gestion et de traitement des e-mails, facilitant ainsi le travail avec des propriétés standard, nommées et personnalisées.
De plus, Aspose.Email fournit une documentation complète, une référence API extensive, et une variété d’outils et d’applications en ligne gratuits pour améliorer votre processus de développement. Les développeurs peuvent également accéder à un forum de support gratuit pour obtenir de l’aide et des conseils de la communauté, et rester informés des dernières astuces et tutoriels via le blog d’Aspose. Ces ressources sont inestimables pour maximiser le potentiel de la bibliothèque dans vos projets.