Laddning och parsning av MSG‑filer

Med Aspose.Email för .NET kan utvecklare både läsa in och parsar innehållet från Outlook‑meddelandefiler.

  • För att läsa in MSG‑filer från disk, använd den statiska MapiMessage.Load metod för MapiMessage klass. Klassen tillhandahåller flera statiska inläsningsfunktioner för olika scenarier.
  • För att analysera innehållet i en MSG‑fil, bör MapiMessage exponerar ett antal metoder och egenskaper.

I den här artikeln kommer du att lära dig hur du läser in och parsar en MSG‑fil för att visa dess innehåll. Kodexemplen med steg ger dig en tydlig förståelse för hur du implementerar funktionaliteten för att läsa in och parsar Outlook MSG‑filer i ditt projekt.

Först, lär dig att läsa in MSG‑filer från fil eller från ström.

Läs in MSG‑filer

Följande kodsnutt visar hur du laddar MSG‑filer.

// 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);
}

Följande kodexempel visar hur man använder MailMessage för att läsa in ett meddelande i MSG‑format.


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

Det bör noteras att ett resulterande meddelande konverteras till EML‑format, inklusive inbäddade meddelande‑bilagor. Använd inte denna laddningsmetod om du vill bevara vissa specifika MSG‑formategenskaper i det ursprungliga meddelandet.

För att bevara det ursprungliga formatet på inbäddade meddelande‑bilagor, använd msgLoadOptions.PreserveEmbeddedMessageFormat egenskap.


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

Läs in från ström

Följande kodsnutt visar hur du laddar en fil från ström.

// 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);

}

Konvertera EML till MSG samtidigt som inbäddat EML‑format bevaras

EML‑filer kan laddas in i MapiMessage klass genom att instansiera en MailMessage objekt och skickar det till MapiMessage.FromMailMessage metod. Om EML‑filen innehåller inbäddade EML‑filer, använd MapiConversionOptions.PreserveEmbeddedMessageFormat för att behålla formatet på inbäddade EML‑filer. Nedanstående kodsnutt visar hur man laddar EML‑filer i MapiMessage med bevarande av formatet för inbäddade EML‑filer.

// 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);

Parse Outlook‑meddelandefiler

Aspose.Email för .NET tillhandahåller MapiMessage klass som används för att öppna och analysera en MSG‑fil. Eftersom det kan finnas många mottagare i en MSG‑fil, är MapiMessage klassen exponerar Mottagare egenskap som returnerar en MapiRecipientCollection som representerar en samling av MapiRecipient objekt. Den MapiRecipient objektet exponerar ytterligare metoder för att arbeta med mottagarattribut.

Följande sekvens av steg tjänar detta ändamål:

  1. Skapa en instans av MapiMessage klass med hjälp av MapiMessage.Load statiska metoden.
  2. Visa avsändarnamn, ämne och meddelandetext från MSG‑filen med hjälp av SenderName, Ämne och Kropp egenskaper.
  3. Använd Mottagare egenskap för att få en referens till samlingen av MapiRecipient objekt som är associerade med MSG‑filen.
  4. Loopa igenom MapiRecipientCollection samling för att visa innehållet för varje MapiRecipient objekt via dess publika metoder.
//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);
}