Зареждане и анализиране на MSG файлове

С използването на Aspose.Email за .NET, разработчиците могат да зареждат и анализират съдържанието от Outlook съобщения.

  • За зареждане на MSG файлове от диск, използвайте статичния MapiMessage.Load метод на MapiMessage клас. Класът предоставя няколко статични функции за зареждане за различни сценарии.
  • За парсиране на съдържанието на MSG файл, MapiMessage излага набор от методи и свойства.

В тази статия ще научите как да заредите и анализирате MSG файл, за да покажете съдържанието му. Примерите с код и стъпки ще ви дадат ясно разбиране как да внедрите функционалността за зареждане и анализиране на Outlook MSG файлове във вашия проект.

Първо научете как да зареждате MSG файлове от файл или от поток.

Зареждане на MSG файлове

Следният кодов откъс показва как да се заредят 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);
}

Следният примерен код показва как да използвате MailMessage за зареждане на съобщение в MSG формат.


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

Трябва да се има предвид, че полученото съобщение се конвертира в EML формат, включително вградените прикачени съобщения. Не използвайте този метод за зареждане, ако искате да запазите някои специфични свойства на оригиналния msg формат.

За да запазите оригиналния формат на вградените прикачени съобщения, използвайте msgLoadOptions.PreserveEmbeddedMessageFormat свойство.


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

Зареждане от поток

Следният кодов откъс показва как да заредите файл от поток.

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

}

Конвертиране на EML към MSG, като се запазва вграденият EML формат

EML файлове могат да се заредят в MapiMessage клас чрез инстанциране на MailMessage обект и го предавате на MapiMessage.FromMailMessage метод. Ако EML файлът съдържа вградени EML файлове, използвайте MapiConversionOptions.PreserveEmbeddedMessageFormat за запазване формата на вградените EML файлове. Следният кодов откъс показва как да се заредят EML файлове в MapiMessage като се запазва форматът на вградените 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);

Анализиране на Outlook съобщения

Aspose.Email за .NET предоставя MapiMessage клас, който се използва за отваряне и парсиране на MSG файл. Тъй като в MSG файл може да има много получатели, MapiMessage класът излага Получатели свойство, което връща MapiRecipientCollection които представляват колекция от MapiRecipient обекти. The MapiRecipient обектът допълнително разкрива методи за работа с атрибутите на получателите.

Следната последователност от стъпки служи за тази цел:

  1. Създайте инстанция на MapiMessage клас, използвайки MapiMessage.Load статичен метод.
  2. Покажете името на подателя, темата и тялото от MSG файла, използвайки SenderName, Subject и Тяло свойства.
  3. Използвайте Получатели свойство за получаване на препратка към колекцията от MapiRecipient обекти, свързани с MSG файла.
  4. Обходете MapiRecipientCollection колекция, за да покажете съдържанието за всяка MapiRecipient обект чрез публичните му методи.
//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);
}