
- Категорії властивостей MAPI
- Перерахування всіх властивостей MAPI
- Перерахування іменованих властивостей MAPI
- Отримання властивостей за дескриптором
- Отримання властивостей за тегом
- Використання методу GetProperty
- Працюючи з користувацькими властивостями
Керування даними електронної пошти програмно може бути складним, особливо при роботі з властивостями інтерфейсу програмування додатків для обміну повідомленнями (MAPI). Ці властивості є атрибутами або метаданими, пов’язаними з об’єктами MAPI, такими як повідомлення, папки, одержувачі та інші компоненти в системі обміну повідомленнями. Ці властивості надають детальну інформацію про об’єкт, таку як тема електронного листа, адреса відправника, дата надсилання електронного листа тощо. Властивості MAPI широко використовуються в клієнтах електронної пошти та інших програмах обміну повідомленнями для управління та маніпулювання даними електронної пошти. Ця стаття заглиблюється в різні техніки доступу, перерахування та маніпулювання властивостями MAPI за допомогою Aspose.Email для .NET.
.NET API для управління властивостями MAPI в C#
Aspose.Email для .NET надає всебічну підтримку для обробки властивостей інтерфейсу програмування додатків для обміну повідомленнями, що дозволяє розробникам управляти та маніпулювати даними електронної пошти з детальним контролем. Це також розширений API, який дозволяє розробникам оснастити свої програми електронної пошти потужними функціями для обробки повідомлень та інших супутніх завдань.
Використовуючи Aspose.Email для .NET, розробники можуть створювати складні рішення для управління та обробки електронної пошти. Щоб почати використовувати бібліотеку, ви можете завантажити її з веб-сайту Aspose або NuGet та інтегрувати в свій проект.
Категорії властивостей MAPI
Переконайтеся, що у вас є Aspose.Email у вашому проекті, і давайте розпочнемо. Властивості MAPI можна класифікувати на три основні типи: стандартні властивості, іменовані властивості та користувацькі (визначені користувачем) властивості. Кожна категорія має іншу мету і надає різні рівні гнучкості та контролю для розробників, які працюють з даними електронної пошти. Ось огляд кожного типу:
Стандартні властивості
Визначені специфікацією MAPI, вони мають попередньо визначені теги властивостей і зазвичай використовуються для стандартних атрибутів об’єктів обміну повідомленнями. Наприклад:
- [PR_SUBJECT][24]: Тема повідомлення.
- [PR_SENDER_NAME][25]: Ім’я відправника.
- [PR_DELIVER_TIME][26]: Дата та час, коли оригінальне повідомлення було доставлено.
Іменовані властивості
Визначені за допомогою GUID та рядкового імені або цілочисельного ідентифікатора, ці властивості дозволяють більш специфічну категоризацію та ідентифікацію за межами стандартних властивостей.
Користувацькі (визначені користувачем) властивості
Визначені розробниками, вони розширюють функціональність об’єктів MAPI, дозволяючи налаштовувати обробку даних, специфічних для програми.
Перерахування всіх властивостей MAPI
Щоб перерахувати всі властивості MAPI в повідомленні, ми будемо використовувати метод MapiMessage.Load, щоб завантажити повідомлення та перебрати його властивості. Нижче наведений приклад коду, який демонструє, як завантажити MAPI повідомлення, перебрати його властивості та надрукувати детальну інформацію про кожну властивість за допомогою Aspose.Email для .NET:
- Завантажте файл MAPI повідомлення з вказаного шляху.
- Переберіть колекцію
msg.Properties.Values
, щоб отримати доступ до кожної властивості. - Для кожної MAPI властивості надрукуйте її тег, канонічне ім’я та тип даних:
- Tag властивість надає унікальний ідентифікатор для властивості MAPI.
- Descriptor.CanonicalName властивість надає зрозуміле ім’я властивості.
- Descriptor.DataType властивість вказує тип даних властивості.
// 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}"); | |
} |
Перерахування іменованих властивостей MAPI
Хоча звичайні властивості MAPI ідентифікуються за допомогою 16-бітного тегу властивості, що складається з типу властивості та ідентифікатора властивості, іменовані властивості ідентифікуються комбінацією GUID та або рядкового імені, або цілочисельного ідентифікатора:
- GUID (глобально унікальний ідентифікатор): унікальний ідентифікатор, що забезпечує унікальність набору властивостей. Цей GUID зазвичай надається розробником.
- Ім’я або ідентифікатор:
- Рядкове ім’я (чутливе до регістру).
- 32-бітний цілочисельний ідентифікатор.
Наступний фрагмент коду демонструє, як використовувати Aspose.Email для .NET, щоб перебрати іменовані властивості MAPI повідомлення і надрукувати детальну інформацію на основі типу дескриптора властивості:
- Переберіть кожну іменовану властивість, отримуючи доступ до колекції ‘NamedProperties.Values’ завантаженого об’єкта MapiMessage, щоб отримати всі іменовані властивості MAPI.
- Перевірте, чи дескриптор поточної іменованої властивості є типом PidNamePropertyDescriptor. Якщо так, перетворіть дескриптор на PidNamePropertyDescriptor. Надрукуйте GUID, канонічне ім’я та тип даних властивості.
- Перевірте, чи дескриптор поточної іменованої властивості є типом PidLidPropertyDescriptor. Якщо так, перетворіть дескриптор на PidLidPropertyDescriptor. Надрукуйте GUID, канонічне ім’я, довгий ідентифікатор та тип даних властивості.
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}"); | |
} | |
} |
Отже, ми надрукували специфічні атрибути, такі як PropertySet
, CanonicalName
, DataType
та LongId
, залежно від типу дескриптора (PidNamePropertyDescriptor
або PidLidPropertyDescriptor
).
Отримання властивостей за дескриптором
Отримання властивостей за дескриптором є простим способом доступу до конкретних властивостей MAPI без перебору всієї колекції властивостей. Aspose.Email для .NET надає зручний спосіб отримати властивості за допомогою KnownPropertyList. Нижче наведений зразок коду демонструє, як отримати та надрукувати деталі конкретної властивості, такої як InternetMessageId, якщо вона існує.
- Отримайте InternetMessageId властивість з колекції Properties об’єкта MapiMessage за допомогою KnownPropertyList.
- Перевірте, що властивість не є null, щоб забезпечити її існування в повідомленні.
- Надрукуйте деталі отриманої властивості: тег, канонічне ім’я та тип даних.
- Якщо тип даних властивості є рядком, використовуйте метод GetString, щоб отримати значення властивості та надрукувати його.
// 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}"); | |
} | |
} |
Отримання властивостей за тегом
Тег властивості є 32-бітним ідентифікатором, який унікально ідентифікує властивість MAPI. Він складається з ідентифікатора властивості та типу властивості. Використовуючи теги властивостей, ви можете безпосередньо отримати доступ до конкретних властивостей у MAPI повідомленні. Нижче наведений зразок коду демонструє, як отримати та надрукувати деталі конкретної властивості, такої як PR_HASATTACH, якщо вона існує.
- Використовуйте MapiPropertyTag, щоб безпосередньо отримати доступ до властивості PR_HASATTACH з колекції Properties об’єкта MapiMessage.
- Перевірте, що властивість не є null, щоб забезпечити її існування в повідомленні.
- Надрукуйте деталі отриманої властивості: тег і тип даних.
- Якщо тип даних властивості є логічним, використовуйте метод GetBoolean, щоб отримати значення властивості та надрукувати, чи має повідомлення вкладення.
// 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}"); | |
} | |
} |
Використання методу GetProperty
Метод GetProperty спрощує процес отримання як звичайних, так і іменованих властивостей з MAPI повідомлення. Цей метод дозволяє вам безпосередньо отримати доступ до властивості за її дескриптором або тегом без ручної перевірки колекції властивостей. Нижче наведений зразок коду демонструє, як використовувати метод GetProperty для доступу до конкретних властивостей MAPI:
- Використовуйте метод GetProperty, щоб безпосередньо отримати доступ до властивості CurrentVersionName з класу KnownPropertyList.
- Перевірте, що властивість не є null, щоб забезпечити її існування в повідомленні.
- Використовуйте метод GetString, щоб отримати значення властивості та надрукувати його.
// Retrieve and print the CurrentVersionName property | |
var namedProperty = msg.GetProperty(KnownPropertyList.CurrentVersionName); | |
if (namedProperty != null) | |
{ | |
Console.WriteLine($"Current Version Name: {namedProperty.GetString()}"); | |
} |
Тут GetProperty
використовується для безпосереднього доступу до властивості CurrentVersionName
.
Працюючи з користувацькими властивостями
Користувацькі властивості MAPI є додатковими властивостями, які не є частиною попередньо визначеного набору властивостей MAPI. Вони створюються для зберігання специфічних для програми даних і визначаються розробником. Дозволяючи розробникам визначати та використовувати додаткові властивості, MAPI надає гнучкий і потужний спосіб зберігання та управління користувацькими даними в програмах обміну повідомленнями. Користувацькі властивості є іменованими властивостями (використовується GUID та рядкове ім’я). Aspose.Email вводить підхід, який ви можете використовувати для отримання всіх визначених у повідомленні користувацьких властивостей. Це досягається за допомогою методу GetCustomProperties. Нижче наведений зразок коду демонструє, як отримати та надрукувати всі користувацькі властивості, визначені в MAPI повідомленні:
- Використовуйте метод GetCustomProperties, щоб отримати колекцію всіх користувацьких властивостей, визначених у повідомленні.
- Переберіть кожну користувацьку властивість у отриманій колекції.
- Надрукуйте деталі властивості: тег, канонічне ім’я та тип даних.
// 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}"); | |
} |
Висновок
Ця стаття досліджує різні техніки доступу, перерахування та маніпулювання властивостями MAPI за допомогою Aspose.Email для .NET. Aspose.Email надає всебічну підтримку для обробки цих властивостей, що дозволяє розробникам управляти та маніпулювати даними електронної пошти з детальним контролем. Використовуючи цю бібліотеку, розробники можуть створювати складні рішення для управління та обробки електронної пошти, спрощуючи роботу зі стандартними, іменованими та користувацькими властивостями.
Крім того, Aspose.Email надає всебічну документацію, розширену API-референцію і різноманітні безкоштовні онлайн-інструменти та додатки, щоб покращити ваш процес розробки. Розробники також можуть отримати доступ до безкоштовного форуму підтримки для допомоги та ідей від спільноти, а також залишатися в курсі останніх порад і навчальних посібників через блог Aspose. Ці ресурси є безцінними для максимізації потенціалу бібліотеки у ваших проектах.