تحميل وتحليل ملفات 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 الكائنات. الـ 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);
}