
- Categorie delle Proprietà MAPI
- Elencare Tutte le Proprietà MAPI
- Elencare Proprietà MAPI Nominative
- Recuperare Proprietà per Descrittore
- Recuperare Proprietà per Tag
- Utilizzare il Metodo GetProperty
- Lavorare con Proprietà Personalizzate
Gestire i dati email programmaticamente può essere complesso, in particolare quando si tratta delle proprietà dell’Interfaccia di Programmazione delle Applicazioni di Messaging (MAPI). Queste proprietà sono attributi o metadati associati a oggetti MAPI come messaggi, cartelle, destinatari e altri componenti in un sistema di messaggistica. Queste proprietà forniscono informazioni dettagliate sull’oggetto, come l’oggetto di un’email, l’indirizzo del mittente, la data in cui un’email è stata inviata e altro ancora. Le proprietà MAPI sono ampiamente utilizzate nei client email e in altre applicazioni di messaggistica per gestire e manipolare i dati email. Questo articolo approfondisce varie tecniche per accedere, enumerare e manipolare le proprietà MAPI utilizzando Aspose.Email per .NET.
API .NET per Gestire le Proprietà MAPI in C#
Aspose.Email per .NET fornisce un supporto completo per gestire le proprietà dell’Interfaccia di Programmazione delle Applicazioni di Messaging, consentendo agli sviluppatori di gestire e manipolare i dati email con un controllo dettagliato. È anche un’API estesa che consente agli sviluppatori di dotare le loro applicazioni email di funzionalità robuste per l’elaborazione dei messaggi e altre attività correlate.
Utilizzando Aspose.Email per .NET, gli sviluppatori possono creare soluzioni sofisticate per la gestione e l’elaborazione delle email. Per iniziare a utilizzare la libreria, puoi scaricarla dal sito web di Aspose o NuGet e integrarla nel tuo progetto.
Categorie delle Proprietà MAPI
Assicurati di avere Aspose.Email nel tuo progetto e iniziamo. Le proprietà MAPI possono essere categorizzate in tre tipi principali: proprietà standard, proprietà nominative e proprietà personalizzate (definite dall’utente). Ogni categoria serve a uno scopo diverso e fornisce livelli variabili di flessibilità e controllo per gli sviluppatori che lavorano con i dati email. Ecco una panoramica di ciascun tipo:
Proprietà Standard
Definite dalla specifica MAPI, hanno tag di proprietà predefiniti e sono comunemente utilizzate per gli attributi standard degli oggetti di messaggistica. Ad esempio:
- [PR_SUBJECT][24]: L’oggetto del messaggio.
- [PR_SENDER_NAME][25]: Il nome del mittente.
- [PR_DELIVER_TIME][26]: La data e l’ora in cui il messaggio originale è stato consegnato.
Proprietà Nominative
Identificate da un GUID e un nome stringa o un identificatore intero, queste proprietà consentono una categorizzazione e identificazione più specifica oltre le proprietà standard.
Proprietà Personalizzate (Definite dall’utente)
Definite dagli sviluppatori, estendono la funzionalità degli oggetti MAPI, consentendo una gestione dei dati personalizzata e specifica per l’applicazione.
Elencare Tutte le Proprietà MAPI
Per elencare tutte le proprietà MAPI in un messaggio, utilizzeremo il metodo MapiMessage.Load per caricare il messaggio e iterare sulle sue proprietà. Il campione di codice seguente dimostra come caricare un messaggio MAPI, iterare attraverso le sue proprietà e stampare informazioni dettagliate su ciascuna proprietà utilizzando Aspose.Email per .NET:
- Carica il file del messaggio MAPI dal percorso specificato.
- Itera sulla collezione
msg.Properties.Values
per accedere a ciascuna proprietà. - Per ciascuna proprietà MAPI, stampa il suo tag, nome canonico e tipo di dato:
- La proprietà Tag fornisce l’identificatore unico per la proprietà MAPI.
- La proprietà Descriptor.CanonicalName fornisce il nome leggibile dall’uomo della proprietà.
- La proprietà Descriptor.DataType indica il tipo di dato della proprietà.
// 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}"); | |
} |
Elencare Proprietà MAPI Nominative
Mentre le normali proprietà MAPI sono identificate da un tag di proprietà a 16 bit che consiste in un tipo di proprietà e un identificatore di proprietà, le proprietà nominative sono identificate da una combinazione di un GUID e un nome stringa o un identificatore intero:
- GUID (Identificatore Unico Globale): Un identificatore unico che assicura che il set di proprietà sia unico. Questo GUID è solitamente fornito dallo sviluppatore.
- Nome o ID:
- Un nome stringa (sensibile al maiuscolo/minuscolo).
- Un identificatore intero a 32 bit.
Il seguente frammento di codice dimostra come utilizzare Aspose.Email per .NET per iterare attraverso le proprietà MAPI nominative di un messaggio e stampare informazioni dettagliate basate sul tipo di descrittore della proprietà:
- Itera attraverso ciascuna proprietà nominativa accedendo alla collezione ‘NamedProperties.Values’ dell’oggetto MapiMessage caricato per ottenere tutte le proprietà MAPI nominative.
- Controlla se il Descrittore della proprietà nominativa corrente è di tipo PidNamePropertyDescriptor. Se lo è, esegui il cast del Descrittore a PidNamePropertyDescriptor. Stampa il GUID, il Nome Canonico e il Tipo di Dato della proprietà.
- Controlla se il Descrittore della proprietà nominativa corrente è di tipo PidLidPropertyDescriptor. Se lo è, esegui il cast del Descrittore a PidLidPropertyDescriptor. Stampa il GUID, il Nome Canonico, l’ID Lungo e il Tipo di Dato della proprietà.
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}"); | |
} | |
} |
Così, abbiamo stampato attributi specifici come PropertySet
, CanonicalName
, DataType
, e LongId
a seconda del tipo di descrittore (PidNamePropertyDescriptor
o PidLidPropertyDescriptor
).
Recuperare Proprietà per Descrittore
Recuperare proprietà per descrittore è un modo semplice per accedere a proprietà MAPI specifiche senza iterare attraverso l’intera collezione di proprietà. Aspose.Email per .NET fornisce un modo conveniente per recuperare proprietà utilizzando la KnownPropertyList. Il campione di codice seguente dimostra come recuperare e stampare i dettagli di una proprietà specifica, come l’InternetMessageId, se esiste.
- Accedi alla proprietà InternetMessageId dalla collezione Properties dell’oggetto MapiMessage utilizzando la KnownPropertyList.
- Verifica che la proprietà non sia nulla per assicurarti che esista nel messaggio.
- Stampa i dettagli della proprietà recuperata: Tag, Nome Canonico e Tipo di Dato.
- Se il tipo di dato della proprietà è una stringa, utilizza il metodo GetString per recuperare il valore della proprietà e stamparlo.
// 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}"); | |
} | |
} |
Recuperare Proprietà per Tag
Un tag di proprietà è un identificatore a 32 bit che identifica univocamente una proprietà MAPI. Consiste in un ID di proprietà e un tipo di proprietà. Utilizzando i tag di proprietà, puoi accedere direttamente a proprietà specifiche all’interno di un messaggio MAPI. Il campione di codice seguente dimostra come recuperare e stampare i dettagli di una proprietà specifica, come PR_HASATTACH, se esiste.
- Utilizza il MapiPropertyTag per accedere direttamente alla proprietà PR_HASATTACH dalla collezione Properties dell’oggetto MapiMessage.
- Verifica che la proprietà non sia nulla per assicurarti che esista nel messaggio.
- Stampa i dettagli della proprietà recuperata: Tag e Tipo di Dato.
- Se il tipo di dato della proprietà è booleano, utilizza il metodo GetBoolean per recuperare il valore della proprietà e stampare se il messaggio ha allegati.
// 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}"); | |
} | |
} |
Utilizzare il Metodo GetProperty
Il metodo GetProperty semplifica il processo di recupero sia delle proprietà normali che di quelle nominate da un messaggio MAPI. Questo metodo ti consente di accedere direttamente a una proprietà tramite il suo descrittore o tag senza dover controllare manualmente la collezione di proprietà. Il campione di codice seguente dimostra come utilizzare il metodo GetProperty per accedere a proprietà MAPI specifiche:
- Utilizza il metodo GetProperty per accedere direttamente alla proprietà CurrentVersionName dalla classe KnownPropertyList.
- Verifica che la proprietà non sia nulla per assicurarti che esista nel messaggio.
- Utilizza il metodo GetString per recuperare il valore della proprietà e stamparlo.
// Retrieve and print the CurrentVersionName property | |
var namedProperty = msg.GetProperty(KnownPropertyList.CurrentVersionName); | |
if (namedProperty != null) | |
{ | |
Console.WriteLine($"Current Version Name: {namedProperty.GetString()}"); | |
} |
Qui, GetProperty
è utilizzato per accedere direttamente alla proprietà CurrentVersionName
.
Lavorare con Proprietà Personalizzate
Le proprietà MAPI personalizzate sono proprietà aggiuntive che non fanno parte del set predefinito di proprietà MAPI. Vengono create per contenere dati specifici dell’applicazione e sono definite dallo sviluppatore. Consentendo agli sviluppatori di definire e utilizzare proprietà aggiuntive, MAPI fornisce un modo flessibile e potente per memorizzare e gestire dati personalizzati all’interno delle applicazioni di messaggistica. Le proprietà personalizzate sono proprietà nominate (utilizzano un GUID e un nome stringa). Aspose.Email introduce un approccio che puoi utilizzare per recuperare tutte le proprietà personalizzate definite nel messaggio. Questo si ottiene con il metodo GetCustomProperties. Il campione di codice seguente dimostra come recuperare e stampare tutte le proprietà personalizzate definite in un messaggio MAPI:
- Utilizza il metodo GetCustomProperties per ottenere una collezione di tutte le proprietà personalizzate definite nel messaggio.
- Itera attraverso ciascuna proprietà personalizzata nella collezione recuperata.
- Stampa i dettagli della proprietà: Tag, Nome Canonico e Tipo di Dato.
// 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}"); | |
} |
Conclusione
Questo articolo ha esplorato varie tecniche per accedere, enumerare e manipolare le proprietà MAPI utilizzando Aspose.Email per .NET. Aspose.Email fornisce un supporto completo per la gestione di queste proprietà, consentendo agli sviluppatori di gestire e manipolare i dati email con un controllo dettagliato. Utilizzando questa libreria, gli sviluppatori possono creare soluzioni sofisticate per la gestione e l’elaborazione delle email, facilitando il lavoro con proprietà standard, nominative e personalizzate.
Inoltre, Aspose.Email fornisce una documentazione completa, un’estesa riferimento API e una varietà di strumenti e app online gratuiti per migliorare il tuo processo di sviluppo. Gli sviluppatori possono anche accedere a un forum di supporto gratuito per assistenza e suggerimenti della comunità, e rimanere aggiornati con gli ultimi consigli e tutorial tramite il blog di Aspose. Queste risorse sono preziose per massimizzare il potenziale della libreria nei tuoi progetti.