Správa MAPI vlastností

Správa e-mailových dat programově může být složitá, zejména při práci s vlastnostmi rozhraní pro programování aplikací pro zasílání zpráv (MAPI). Tyto vlastnosti jsou atributy nebo metadata spojená s MAPI objekty, jako jsou zprávy, složky, příjemci a další komponenty v systému zasílání zpráv. Tyto vlastnosti poskytují podrobné informace o objektu, jako je předmět e-mailu, adresa odesílatele, datum, kdy byl e-mail odeslán, a další. MAPI vlastnosti se široce používají v e-mailových klientech a dalších aplikacích pro zasílání zpráv k správě a manipulaci s e-mailovými daty. Tento článek se zabývá různými technikami přístupu, enumerace a manipulace s MAPI vlastnostmi pomocí Aspose.Email pro .NET.

.NET API pro správu MAPI vlastností v C#

Aspose.Email pro .NET poskytuje komplexní podporu pro zpracování vlastností rozhraní pro programování aplikací pro zasílání zpráv, což umožňuje vývojářům spravovat a manipulovat s e-mailovými daty s podrobnou kontrolou. Je to také rozsáhlé API, které umožňuje vývojářům vybavit své e-mailové aplikace robustními funkcemi pro zpracování zpráv a další související úkoly.

Pomocí Aspose.Email pro .NET mohou vývojáři vytvářet sofistikovaná řešení pro správu a zpracování e-mailu. Chcete-li začít využívat knihovnu, můžete si ji stáhnout z webu Aspose nebo NuGet a integrovat ji do svého projektu.

Kategorie MAPI vlastností

Ujistěte se, že máte Aspose.Email ve svém projektu a pojďme začít. MAPI vlastnosti lze rozdělit do tří hlavních typů: standardní vlastnosti, pojmenované vlastnosti a vlastní (uživatelsky definované) vlastnosti. Každá kategorie slouží jinému účelu a poskytuje různé úrovně flexibility a kontroly pro vývojáře pracující s e-mailovými daty. Zde je přehled každého typu:

Standardní vlastnosti

Definované specifikací MAPI, mají předdefinované značky vlastností a běžně se používají pro standardní atributy zasílacích objektů. Například:

Pojmenované vlastnosti

Identifikované GUID a řetězcovým názvem nebo celočíselným identifikátorem, tyto vlastnosti umožňují konkrétnější kategorizaci a identifikaci nad rámec standardních vlastností.

Vlastní (uživatelsky definované) vlastnosti

Definované vývojáři, rozšiřují funkčnost MAPI objektů, což umožňuje přizpůsobené a aplikací specifické zpracování dat.

Seznam všech MAPI vlastností

Chcete-li vypsat všechny MAPI vlastnosti ve zprávě, použijeme metodu MapiMessage.Load k načtení zprávy a iteraci přes její vlastnosti. Následující ukázka kódu demonstruje, jak načíst MAPI zprávu, iterovat přes její vlastnosti a tisknout podrobné informace o každé vlastnosti pomocí Aspose.Email pro .NET:

  1. Načtěte MAPI zprávu z určené cesty.
  2. Iterujte přes kolekci msg.Properties.Values, abyste přistupovali k jednotlivým vlastnostem.
  3. Pro každou MAPI vlastnost vytiskněte její značku, kanonické jméno a datový typ:
    • Tag vlastnost poskytuje jedinečný identifikátor pro MAPI vlastnost.
    • Descriptor.CanonicalName vlastnost dává čitelný název vlastnosti.
    • Descriptor.DataType vlastnost označuje datový typ vlastnosti.
// 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}");
}

Seznam pojmenovaných MAPI vlastností

Zatímco běžné MAPI vlastnosti jsou identifikovány 16bitovou značkou vlastností, která se skládá z typu vlastnosti a identifikátoru vlastnosti, pojmenované vlastnosti jsou identifikovány kombinací GUID a buď řetězcového názvu, nebo celočíselného identifikátoru:

  • GUID (Globálně jedinečný identifikátor): Jedinečný identifikátor, který zajišťuje, že je sada vlastností jedinečná. Tento GUID obvykle poskytuje vývojář.
  • Název nebo ID:
    • Řetězcový název (citlivý na velikost písmen).
    • 32bitový celočíselný identifikátor.

Následující úryvek kódu ukazuje, jak použít Aspose.Email pro .NET k iteraci přes pojmenované MAPI vlastnosti zprávy a tisknout podrobné informace na základě typu popisu vlastnosti:

  1. Iterujte přes každou pojmenovanou vlastnost přístupem k kolekci ‘NamedProperties.Values’ načteného MapiMessage objektu, abyste získali všechny pojmenované MAPI vlastnosti.
  2. Zkontrolujte, zda je popis aktuální pojmenované vlastnosti typu PidNamePropertyDescriptor. Pokud ano, přetypujte popis na PidNamePropertyDescriptor. Vytiskněte GUID, kanonické jméno a datový typ vlastnosti.
  3. Zkontrolujte, zda je popis aktuální pojmenované vlastnosti typu PidLidPropertyDescriptor. Pokud ano, přetypujte popis na PidLidPropertyDescriptor. Vytiskněte GUID, kanonické jméno, dlouhé ID a datový typ vlastnosti.
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}");
}
}

Tímto způsobem jsme vytiskli specifické atributy jako PropertySet, CanonicalName, DataType a LongId v závislosti na typu popisu (PidNamePropertyDescriptor nebo PidLidPropertyDescriptor).

Načítání vlastností podle popisu

Načítání vlastností podle popisu je přímočarý způsob přístupu k konkrétním MAPI vlastnostem, aniž byste museli iterovat přes celou kolekci vlastností. Aspose.Email pro .NET poskytuje pohodlný způsob, jak načítat vlastnosti pomocí KnownPropertyList. Následující ukázka kódu demonstruje, jak načíst a vytisknout podrobnosti o konkrétní vlastnosti, jako je InternetMessageId, pokud existuje.

  1. Přistupte k vlastnosti InternetMessageId z kolekce vlastností objektu MapiMessage pomocí KnownPropertyList.
  2. Ověřte, že vlastnost není null, abyste zajistili, že existuje ve zprávě.
  3. Vytiskněte podrobnosti o načtené vlastnosti: značku, kanonické jméno a datový typ.
  4. Pokud je datový typ vlastnosti řetězec, použijte metodu GetString k načtení hodnoty vlastnosti a vytiskněte ji.
// 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}");
}
}

Načítání vlastností podle značky

Značka vlastnosti je 32bitový identifikátor, který jedinečně identifikuje MAPI vlastnost. Skládá se z ID vlastnosti a typu vlastnosti. Pomocí značek vlastností můžete přímo přistupovat k konkrétním vlastnostem uvnitř MAPI zprávy. Následující ukázka kódu demonstruje, jak načíst a vytisknout podrobnosti o konkrétní vlastnosti, jako je PR_HASATTACH, pokud existuje.

  1. Použijte MapiPropertyTag k přímému přístupu k vlastnosti PR_HASATTACH z kolekce vlastností objektu MapiMessage.
  2. Ověřte, že vlastnost není null, abyste zajistili, že existuje ve zprávě.
  3. Vytiskněte podrobnosti o načtené vlastnosti: značku a datový typ.
  4. Pokud je datový typ vlastnosti boolean, použijte metodu GetBoolean k načtení hodnoty vlastnosti a vytiskněte, zda má zpráva přílohy.
// 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}");
}
}

Použití metody GetProperty

Metoda GetProperty zjednodušuje proces načítání jak běžných, tak pojmenovaných vlastností z MAPI zprávy. Tato metoda vám umožňuje přímo přistupovat k vlastnosti podle jejího popisu nebo značky, aniž byste museli ručně kontrolovat kolekci vlastností. Následující ukázka kódu demonstruje, jak využít metodu GetProperty k přístupu k konkrétním MAPI vlastnostem:

  1. Použijte metodu GetProperty k přímému přístupu k vlastnosti CurrentVersionName z třídy KnownPropertyList.
  2. Ověřte, že vlastnost není null, abyste zajistili, že existuje ve zprávě.
  3. Použijte metodu GetString k načtení hodnoty vlastnosti a vytiskněte ji.
// Retrieve and print the CurrentVersionName property
var namedProperty = msg.GetProperty(KnownPropertyList.CurrentVersionName);
if (namedProperty != null)
{
Console.WriteLine($"Current Version Name: {namedProperty.GetString()}");
}
view raw GetProperty.cs hosted with ❤ by GitHub

Zde je GetProperty použito k přístupu k vlastnosti CurrentVersionName přímo.

Práce s vlastními vlastnostmi

Vlastní MAPI vlastnosti jsou další vlastnosti, které nejsou součástí předdefinované sady MAPI vlastností. Jsou vytvořeny pro uchovávání dat specifických pro aplikaci a jsou definovány vývojářem. Tím, že umožňují vývojářům definovat a používat další vlastnosti, MAPI poskytuje flexibilní a výkonný způsob, jak ukládat a spravovat vlastní data v rámci aplikací pro zasílání zpráv. Vlastní vlastnosti jsou pojmenované vlastnosti (používají GUID a řetězcový název). Aspose.Email zavádí přístup, který můžete použít k načtení všech vlastních vlastností definovaných ve zprávě. Toho je dosaženo pomocí metody GetCustomProperties. Následující ukázka kódu demonstruje, jak načíst a vytisknout všechny vlastní vlastnosti definované v MAPI zprávě:

  1. Použijte metodu GetCustomProperties k získání kolekce všech vlastních vlastností definovaných ve zprávě.
  2. Iterujte přes každou vlastní vlastnost v načtené kolekci.
  3. Vytiskněte podrobnosti o vlastnosti: značku, kanonické jméno a datový typ.
// 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}");
}

Závěr

Tento článek prozkoumal různé techniky přístupu, enumerace a manipulace s MAPI vlastnostmi pomocí Aspose.Email pro .NET. Aspose.Email poskytuje komplexní podporu pro zpracování těchto vlastností, což umožňuje vývojářům spravovat a manipulovat s e-mailovými daty s podrobnou kontrolou. Použitím této knihovny mohou vývojáři vytvářet sofistikovaná řešení pro správu a zpracování e-mailu, což usnadňuje práci se standardními, pojmenovanými a vlastními vlastnostmi.

Kromě toho Aspose.Email poskytuje komplexní dokumentaci, rozsáhlou referenci API a různé bezplatné online nástroje a aplikace, které zlepší váš vývojový proces. Vývojáři mohou také přistupovat k bezplatnému podpůrnému fóru pro komunitní pomoc a názory a být informováni o nejnovějších tipech a tutoriálech prostřednictvím Aspose blogu. Tyto zdroje jsou neocenitelné pro maximalizaci potenciálu knihovny ve vašich projektech.

Viz také