مدیریت پیوست‌های پیام

مدیریت پیوست‌ها در Outlook

ایجاد و ذخیره فایل‌های پیام Outlook (MSG) نحوه ایجاد و ذخیره پیام‌ها و چگونگی ساخت فایل‌های MSG با پیوست‌ها را توضیح می‌دهد. این مقاله نحوه مدیریت پیوست‌های Microsoft Outlook با Aspose.Email را شرح می‌دهد. پیوست‌های یک فایل پیام با استفاده از به دیسک دسترسی پیدا کرده و ذخیره می‌شوند MapiMessage کلاس پیوست‌ها ویژگی. این پیوست‌ها ویژگی یک مجموعه از نوع است MapiAttachmentCollection کلاس.

بررسی نوع پیوست (درون‌خطی یا عادی)

پیوست‌های درون‌خطی و عادی اهداف متفاوتی دارند. پیوست‌های درون‌خطی به صورت بصری در پیام ایمیل یکپارچه می‌شوند و معمولاً تصاویر یا فایل‌های رسانه‌ای هستند. در حالی که پیوست‌های عادی فایل‌های جداگانه‌ای هستند که به ایمیل پیوست می‌شوند و می‌توانند انواع مختلفی از فایل‌ها را شامل شوند. The MapiAttachment.IsInline ویژگی MapiAttachment کلاس مقداری را دریافت می‌کند که نشان می‌دهد پیوست به‌صورت inline است یا معمولی.

نمونه کد زیر اطلاعات هر پیوست در MapiMessage بارگذاری شده را استخراج و نمایش می‌دهد، از جمله نام‌های نمایشی آنها و اینکه آیا پیوست‌های درون‌خطی هستند یا خیر.

var message = MapiMessage.Load(fileName);

foreach (var attach in message.Attachments)
{
    Console.WriteLine($"{attach.DisplayName0} : {attach.IsInline)}");
}

بررسی نوع پیوست (IsReference)

این MapiAttachment کلاس شامل IsReference ویژگیتی که به توسعه‌دهندگان امکان شناسایی پیوست‌های مرجع در یک پیام را می‌دهد. با نمونه کد زیر، می‌توانید بررسی کنید که آیا یک پیوست، پیوست مرجع است یا خیر:

foreach (var attachment in msg.Attachments)
{
    if (attachment.IsReference)
    {
        // Process reference attachment
    }
}

ذخیره پیوست‌ها از فایل‌های MSG

برای ذخیره پیوست‌ها از یک فایل MSG:

  1. درون MapiAttachmentCollection مجموعه را فراخوانی کنید و پیوست‌های جداگانه را دریافت کنید.
  2. برای ذخیره پیوست‌ها، متد Save() کلاس MapiAttachment را فراخوانی کنید.

قطعه کد زیر نشان می‌دهد که چگونه پیوست‌ها را در دیسک محلی ذخیره کنید.

استخراج پیوست‌ها از فایل‌های MSG با فرمت RTF

برای پیام‌هایی که به صورت RTF قالب‌بندی شده‌اند، می‌توان از کد زیر برای تمایز و استخراج پیوست‌هایی که یا درون‌خطی هستند یا به‌صورت آیکن در بدنه پیام ظاهر می‌شوند استفاده کرد. قطعه کد زیر نشان می‌دهد چگونه یک پیوست جاسازی‌شده را از MSG فرمت RTF شناسایی و استخراج کنید.


var eml = MapiMessage.Load("MSG file with RTF Formatting.msg");

foreach (var attachment in eml.Attachments)
{
    if (IsAttachmentInline(attachment))
    {
        try
        {
            SaveAttachment(attachment, Data.Out/new Guid().ToString());
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}

static bool IsAttachmentInline(MapiAttachment attachment)
{
    foreach (var property in attachment.ObjectData.Properties.Values)
    {
        if (property.Name == "\x0003ObjInfo")
        {
            var odtPersist1 = BitConverter.ToUInt16(property.Data, 0);
            return (odtPersist1 & (1 << (7 - 1))) == 0;
        }
    }
    return false;
}

static void SaveAttachment(MapiAttachment attachment, string fileName)
{
    foreach (var property in attachment.ObjectData.Properties.Values)
    {
        if (property.Name == "Package")
        {
            using var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
            fs.Write(property.Data, 0, property.Data.Length);
        }
    }
}

دریافت پیوست‌های پیام ایمیل تو در تو

پیوست‌های OLE جاسازی‌شده نیز در MapiMessage کلاس مجموعهٔ Attachment. مثال کد زیر یک فایل پیام را برای پیوست‌های پیام درون‌ریزی‌شده تجزیه می‌کند و آن را بر روی دیسک ذخیره می‌نماید. The MapiMessage متد ایستا FromProperties() کلاس می‌تواند پیام جدیدی از پیوست درون‌ریزی‌شده ایجاد کند. قطعه کد زیر نشان می‌دهد که چگونه پیوست‌های پیام ایمیل تو در تو را دریافت کنید.

حذف پیوست‌ها

کتابخانه Aspose Outlook امکان حذف پیوست‌ها از فایل‌های پیام Microsoft Outlook (.msg) را فراهم می‌کند:

  • متد RemoveAttachments() را فراخوانی کنید. این متد مسیر فایل پیام را به‌ عنوان پارامتر می‌گیرد. به عنوان یک متد عمومی استاتیک پیاده‌سازی شده است، بنابراین نیازی به ساخت نمونه شیء ندارید.

قطعه کد زیر نشان می‌دهد چگونه پیوست‌ها را حذف کنید.

شما می‌توانید MapiMessage متد ایستای کلاس DestroyAttachment(). این روش سریع‌تر از RemoveAttachment() عمل می‌کند، زیرا متد RemoveAttachment() فایل پیام را تجزیه می‌کند.

افزودن پیوست‌های MSG

یک پیام Outlook می‌تواند پیام‌های دیگر Microsoft Outlook را به‌عنوان پیوست، چه به‌صورت عادی و چه به‌صورت جاسازی‌شده، شامل شود. The MapiAttachmentCollection متدهای overload شدهٔ متد Add را فراهم می‌کند تا پیام‌های Outlook را با هر دو نوع پیوست ایجاد کند.

افزودن پیوست‌های مرجع به MapiMessages

این ReferenceAttachmentOptions کلاس افزودن پیوست‌های مرجع را با جمع‌آوری تمام ویژگی‌های لازم در یک شیء ساده می‌کند.

پارامترهای ReferenceAttachmentOptions:

  • sharedLink: لینک به‌طور کامل مشخص‌شدهٔ اشتراکی به پیوست که توسط سرویس وب میزبانی فایل ارائه می‌شود.
  • url: مکان فایل یا URL منبع.
  • providerName: نام ارائه‌دهندهٔ پیوست مرجع (مثلاً Google Drive, Dropbox).
  • مثال: افزودن پیوست مرجع با ReferenceAttachmentOptions
var options = new ReferenceAttachmentOptions(
    "https://drive.google.com/file/d/1HJ-M3F2qq1oRrTZ2GZhUdErJNy2CT3DF/",
    "https://drive.google.com/drive/my-drive",
    "GoogleDrive");

// Add reference attachment
msg.Attachments.Add("Document.pdf", options);

جاسازی پیام‌ها به‌عنوان پیوست

قطعه کد زیر نشان می‌دهد چگونه یک پیوست فایل MSG را به یک پیام جاسازی کنید.

خواندن پیام‌های توکار از پیوست‌ها

قطعه کد زیر نشان می‌دهد چگونه پیام‌های توکار را از پیوست‌ها بخوانید.

درج و جایگزینی پیوست

API Aspose.Email امکان درج پیوست‌ها در ایندکس خاص داخل پیام والد را فراهم می‌کند. همچنین امکان جایگزینی محتوای یک پیوست با پیوست پیام دیگری را فراهم می‌آورد.

درج پیوست‌ها در مکان‌های خاص

API Aspose.Email امکان درج یک پیوست MSG به یک MSG والد را با استفاده از متد Insert از MapiAttachmentCollection فراهم می‌کند: MapiAttachmentCollection Insert(int index, string name, MapiMessage msg). قطعه کد زیر نشان می‌دهد چگونه یک پیوست را در مکان خاصی وارد کنید.

جایگزین کردن محتوای پیوست

این می‌تواند برای جایگزینی محتوای پیوست‌های توکار با موارد جدید با استفاده از متد Replace مورد استفاده قرار گیرد. اما نمی‌توان از آن برای افزودن پیوست با PR_ATTACH_NUM = 4 (به عنوان مثال) در مجموعه‌ای که تعداد آن 2 باشد استفاده کرد. قطعه کد زیر نشان می‌دهد چگونه محتوای پیوست را جایگزین کنید.

تغییر نام پیوست‌ها در MapiMessage

امکان ویرایش مقدار ویژگی DisplayName در پیوست‌های MapiMessage وجود دارد.

var msg = MapiMessage.Load(fileName);
msg.Attachments[0].DisplayName = "New display name 1";
msg.Attachments[1].DisplayName = "New display name 2";

ذخیره پیوست‌ها از پیام‌های امضا دیجیتال

API Aspose.Email امکان دریافت یا تنظیم مقداری را فراهم می‌کند که نشان می‌دهد آیا پیام با امضای واضح رمزگشایی خواهد شد یا نه.