Ładowanie i parsowanie plików MSG

Korzystając z Aspose.Email dla .NET, programiści mogą wczytywać oraz parsować zawartość plików wiadomości Outlook.

  • Aby wczytać pliki MSG z dysku, użyj statycznej MapiMessage.Load metoda MapiMessage klasa. Klasa udostępnia kilka statycznych funkcji ładowania dla różnych scenariuszy.
  • Aby sparsować zawartość pliku MSG, MapiMessage udostępnia szereg metod i właściwości.

W tym artykule dowiesz się, jak wczytać i przeanalizować plik MSG, aby wyświetlić jego zawartość. Przykłady kodu wraz z krokami zapewnią jasne zrozumienie, jak zaimplementować funkcjonalność wczytywania i parsowania plików Outlook MSG w Twoim projekcie.

Najpierw dowiedz się, jak wczytywać pliki MSG z pliku lub ze strumienia.

Wczytaj pliki MSG

Poniższy fragment kodu pokazuje, jak wczytać pliki MSG.

// Create an instance of MapiMessage from file
var msg = MapiMessage.Load(@"message.msg");

// Get subject
Console.WriteLine("Subject:" + msg.Subject);

// Get from address
Console.WriteLine("From:" + msg.SenderEmailAddress);

// Get body
Console.WriteLine("Body" + msg.Body);

// Get recipients information
Console.WriteLine("Recipient: " + msg.Recipients);

// Get attachments
foreach (var att in msg.Attachments)
{
    Console.Write("Attachment Name: " + att.FileName);
    Console.Write("Attachment Display Name: " + att.DisplayName);
}

Poniższy przykład kodu pokazuje, jak użyć MailMessage do wczytania wiadomości w formacie MSG.


var eml = MailMessage.Load("message.msg");

Należy zauważyć, że wynikowa wiadomość jest konwertowana do formatu EML, włącznie z załączonymi wiadomościami. Nie używaj tej metody ładowania, jeśli chcesz zachować niektóre specyficzne właściwości formatu MSG oryginalnej wiadomości.

Aby zachować pierwotny format załączonych wiadomości, użyj msgLoadOptions.PreserveEmbeddedMessageFormat właściwość.


var msgLoadOptions = new MsgLoadOptions();
msgLoadOptions.PreserveEmbeddedMessageFormat = true;
var msg = MailMessage.Load(stream, msgLoadOptions);

Wczytaj ze strumienia

Poniższy fragment kodu pokazuje, jak wczytać plik ze strumienia.

// Create an instance of MapiMessage from file
byte[] bytes = File.ReadAllBytes(@"message.msg");

using (MemoryStream stream = new MemoryStream(bytes))
{
    stream.Seek(0, SeekOrigin.Begin);
    // Create an instance of MapiMessage from file
    MapiMessage msg = MapiMessage.Load(stream);

    // Get subject
    Console.WriteLine("Subject:" + msg.Subject);

    // Get from address
    Console.WriteLine("From:" + msg.SenderEmailAddress);

    // Get body
    Console.WriteLine("Body" + msg.Body);

}

Konwertuj EML do MSG zachowując wbudowany format EML

Pliki EML mogą być wczytane do MapiMessage klasę, tworząc MailMessage obiekt i przekazując go do MapiMessage.FromMailMessage metoda. Jeśli plik EML zawiera osadzone pliki EML, użyj MapiConversionOptions.PreserveEmbeddedMessageFormat aby zachować format osadzonych plików EML. Poniższy fragment kodu pokazuje, jak wczytać pliki EML do MapiMessage z zachowaniem formatu osadzonych plików EML.

// Load the EML file into a MailMessage object
var mailMessage = MailMessage.Load(emlFilePath);

// Set conversion options to preserve the format of embedded EML messages
var options = new MapiConversionOptions
    {
        PreserveEmbeddedMessageFormat = true
    };

// Convert MailMessage to MapiMessage, preserving embedded EML files
var mapiMessage = MapiMessage.FromMailMessage(mailMessage, options);

// Save the converted message in MSG format
mapiMessage.Save(msgFilePath);

Parsuj pliki wiadomości Outlook

Aspose.Email dla .NET zapewnia MapiMessage klasa używana do otwierania i parsowania pliku MSG. Ponieważ w pliku MSG może znajdować się wielu odbiorców, MapiMessage klasa udostępnia Odbiorcy właściwość, która zwraca MapiRecipientCollection który reprezentuje kolekcję MapiRecipient obiekty. The MapiRecipient obiekt dodatkowo udostępnia metody do pracy z atrybutami odbiorców.

Następująca kolejność kroków spełnia ten cel:

  1. Utwórz instancję MapiMessage klasę przy użyciu MapiMessage.Load metody statycznej.
  2. Wyświetl nazwę nadawcy, temat i treść z pliku MSG używając SenderName, Subject i Treść właściwości.
  3. Użyj Odbiorcy właściwość umożliwiająca uzyskanie odniesienia do kolekcji MapiRecipient obiektów powiązanych z plikiem MSG.
  4. Iteruj przez MapiRecipientCollection kolekcja do wyświetlania zawartości dla każdego MapiRecipient obiekt poprzez jego publiczne metody.
//Instantiate an MSG file to load an MSG file from disk
var outlookMessageFile = MapiMessage.Load(dataDir + "message.msg");
//Display sender's name
Console.WriteLine("Sender Name : " + outlookMessageFile.SenderName);
//Display Subject
Console.WriteLine("Subject : " + outlookMessageFile.Subject);
//Display Body
Console.WriteLine("Body : " + outlookMessageFile.Body);
//Display Recipient's info
Console.WriteLine("Recipients : \n");

//Loop through the recipients collection associated with the MapiMessage object
foreach (var rcp in outlookMessageFile.Recipients)
{
	//Display recipient email address
	Console.WriteLine("Email : " + rcp.EmailAddress);
	//Display recipient name
	Console.WriteLine("Name : " + rcp.DisplayName);
	//Display recipient type
	Console.WriteLine("Recipient Type : " + rcp.RecipientType);
}