بارگذاری و تجزیهٔ فایل‌های MSG

با استفاده از Aspose.Email for .NET، توسعه‌دهندگان می‌توانند محتویات فایل‌های پیام Outlook را بارگذاری و تجزیه کنند.

  • برای بارگذاری فایل‌های MSG از دیسک، از ایستای MapiMessage.Load متد از MapiMessage کلاس. این کلاس چندین تابع بارگذاری ایستا برای سناریوهای مختلف ارائه می‌دهد.
  • برای تجزیه محتویات فایل MSG، MapiMessage تعداد زیادی از متدها و ویژگی‌ها را افشا می‌کند.

در این مقاله خواهید آموخت چگونه یک فایل MSG را بارگذاری و تجزیه کنید تا محتوای آن را نمایش دهید. نمونه‌های کد همراه با گام‌ها درک واضحی از نحوه پیاده‌سازی عملکرد بارگذاری و تجزیه فایل‌های MSG Outlook در پروژه‌تان به شما می‌دهد.

ابتدا یاد بگیرید چگونه فایل‌های 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);

بارگذاری از استریم

قطعه کد زیر نشان می‌دهد چگونه فایل را از جریان (stream) بارگذاری کنید.

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