Propriedades MAPI

Propriedades MAPI

Este guia mostra como ler, iterar e escrever propriedades MAPI em arquivos Outlook MSG usando Aspose.Email FOSS para .NET. Cada arquivo MS G armazena dados como pares de valores-chave marcados; acesse-os através do MapiMessage, MapiPropertyCollection, e o CommonMessagePropertyId - Não.


Propriedades de leitura

Propriedades de conveniência

MapiMessage expõe as propriedades mais comuns como proprietas tipizadas em C#:

using Aspose.Email.Foss.Msg;

using var message = MapiMessage.FromFile("sample.msg");

Console.WriteLine(message.Subject);              // string?
Console.WriteLine(message.Body);                 // string?
Console.WriteLine(message.HtmlBody);             // string?
Console.WriteLine(message.SenderName);           // string?
Console.WriteLine(message.SenderEmailAddress);   // string?
Console.WriteLine(message.InternetMessageId);    // string?
Console.WriteLine(message.MessageDeliveryTime);  // DateTime?
Console.WriteLine(message.MessageClass);         // string?

Acesso à propriedade bruta

Para propriedades não expostas como campos de conveniência digitados, chamar a: GetPropertyValue() com o ID da propriedade, código do tipo e um decode Indicador para obter o valor bruto:

// Read a string property by ID and type
var displayTo = message.GetPropertyValue(
    (ushort)CommonMessagePropertyId.DisplayTo,
    (ushort)PropertyTypeCode.PtypString,
    decode: true);

Console.WriteLine($"Display To: {displayTo}");

Iterar todas as propriedades

Chama-me . IterPropertyKeys() Enumerar todos os pares (ID de propriedade, tipo) ou utilizar: IterProperties() para obter os objetos de propriedade completos, incluindo etiqueta e valor decodificado:

// List all property keys (ID + type pairs)
foreach (var (propId, propType) in message.IterPropertyKeys())
    Console.WriteLine($"Property: 0x{propId:X4} (type: 0x{propType:X4})");

// Iterate full property objects
foreach (var prop in message.IterProperties())
{
    Console.WriteLine($"ID=0x{prop.PropertyId:X4} " +
                      $"Type=0x{prop.PropertyType:X4} " +
                      $"Tag=0x{prop.PropertyTag:X8} " +
                      $"Value={prop.Value}");
}

Propriedades de escrita

Configurar propriedades em uma nova mensagem

Criar um MapiMessage com: MapiMessage.Create(),Então , liga-me . SetProperty() com um CommonMessagePropertyId constante, a PropertyTypeCode, e o valor a definir:

var message = MapiMessage.Create("Test", "Body");

message.SetProperty(
    (ushort)CommonMessagePropertyId.SenderName,
    (ushort)PropertyTypeCode.PtypString,
    "Alice");

message.SetProperty(
    (ushort)CommonMessagePropertyId.SenderEmailAddress,
    (ushort)PropertyTypeCode.PtypString,
    "alice@example.com");

message.SetProperty(
    (ushort)CommonMessagePropertyId.MessageDeliveryTime,
    (ushort)PropertyTypeCode.PtypTime,
    new DateTime(2026, 3, 15, 10, 30, 0, DateTimeKind.Utc));

Acesso directo à recolha de dados

MapiPropertyCollection exposições Add, Set, Get, e Remove métodos para o controlo pormenorizado das propriedades individuais do MAPI sem passar pela API de conveniência tipada:

// Access the property collection
var props = message.Properties;

// Add a property
props.Add(
    (ushort)CommonMessagePropertyId.InternetCodepage,
    (ushort)PropertyTypeCode.PtypInteger32,
    65001,  // UTF-8
    flags: 0);

// Read it back
var codepage = props.Get(
    (ushort)CommonMessagePropertyId.InternetCodepage,
    (ushort)PropertyTypeCode.PtypInteger32);

Console.WriteLine($"Codepage: {codepage?.Value}");

// Remove a property
props.Remove(
    (ushort)CommonMessagePropertyId.InternetCodepage,
    (ushort)PropertyTypeCode.PtypInteger32);

Identificadores de propriedade comum

A Comissão CommonMessagePropertyId enum lista IDs de propriedade. Passe estas constantes para GetPropertyValue e a) SetProperty em vez de literais numéricos:

PropriedadeDescrição:
SubjectObjeto da mensagem:
BodyCorpo de texto simples
BodyHtmlCorpo HTML
SenderNameNome de exibição do remetente
SenderEmailAddressEndereço de e-mail do remetente
DisplayToPara os destinatários exibir cadeia de caracteres
DisplayCcCc destinatários display string
DisplayBccBcc destinatários exibir cadeia de caracteres
InternetMessageIdRFC 5322 Identificação de mensagem
MessageDeliveryTimeMarca de entrega
TransportMessageHeadersCabeçalhos de RFC 5322 em bruto
AttachFilenameNome de arquivo do anexo curto
AttachLongFilenameNome de arquivo longo do anexo
AttachMimeTagTipo MIME de anexo
AttachContentIdIdentificador de conteúdo do anexo

Códigos do tipo de propriedade

A Comissão PropertyTypeCode enum maps Códigos de tipo MAPI:

Tipo de veículo:Descrição:
PtypStringCriação de Unicode
PtypString8Cadeia ANSI
PtypInteger3232-bit integer
PtypInteger6464-bit integer
PtypBooleanBooleano
PtypTimeData e hora (FILETIME)
PtypBinaryArray de bytes
PtypGuidGUID

Propriedades de fixação

Cada um. MapiAttachment também tem a sua própria Properties Coleção Iterada attachment.Properties.IterProperties() Enumerar todas as entradas de propriedade MAPI para esse anexo:

foreach (var attachment in message.Attachments)
{
    Console.WriteLine($"Attachment: {attachment.Filename}");

    foreach (var prop in attachment.Properties.IterProperties())
        Console.WriteLine($"  0x{prop.PropertyTag:X8} = {prop.Value}");
}

Ver também:

Ver também:

 Português