إدارة مرفقات الرسائل
معالجة المرفقات في Outlook
إنشاء وحفظ ملفات رسائل Outlook (MSG) يشرح كيفية إنشاء وحفظ الرسائل، وكيفية إنشاء ملفات MSG مع المرفقات. توضح هذه المقالة كيفية إدارة مرفقات Microsoft Outlook باستخدام Aspose.Email. يتم الوصول إلى المرفقات من ملف رسالة وحفظها على القرص باستخدام MapiMessage فئة المرفقات الخاصية. الـ المرفقات خاصية هي مجموعة من النوع MapiAttachmentCollection فئة.
التحقق من نوع المرفق (مضمن أم عادي)
المرفقات المدمجة والعادية تخدم أغراضًا مختلفة. المرفقات المدمجة مدمجة بصريًا في رسالة البريد الإلكتروني وعادةً ما تكون صورًا أو ملفات وسائط. بينما المرفقات العادية هي ملفات منفصلة مرفقة بالبريد ويمكن أن تشمل أنواعًا مختلفة من الملفات. الـ MapiAttachment.IsInline خاصية الـ MapiAttachment الفئة تحصل على قيمة تشير ما إذا كان المرفق مضمّنًا أو عاديًا.
يستخرج مثال الشيفرة التالي ويعرض معلومات حول كل مرفق في كائن 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:
- التكرار عبر الـ MapiAttachmentCollection المجموعة واحصل على المرفقات الفردية.
- لحفظ المرفقات، استدعِ طريقة 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 فئة مجموعة المرفقات. ي解析 المثال البرمجي التالي ملف رسالة للبحث عن مرفقات رسائل مدمجة ويحفظها على القرص. الـ MapiMessage يمكن للطريقة الساكنة FromProperties() في الفئة إنشاء رسالة جديدة من مرفق مدمج. يوضح المقتطف البرمجي التالي كيفية الحصول على مرفقات الرسائل البريدية المتداخلة.
إزالة المرفقات
توفر مكتبة Aspose Outlook القدرة على إزالة المرفقات من ملفات رسائل Microsoft Outlook (.msg):
- استدعِ طريقة RemoveAttachments(). تأخذ مسار ملف الرسالة كمعامل. تم تنفيذها كطريقة ثابتة عامة، لذا لا تحتاج إلى إنشاء كائن.
يوضح مقطع الشيفرة التالي كيفية إزالة المرفقات.
يمكنك أيضًا استدعاء الـ MapiMessage طريقة ثابتة في الفئة DestroyAttachment(). يعمل أسرع من RemoveAttachment()، لأن طريقة RemoveAttachment() تقوم بتحليل ملف الرسالة.
إضافة مرفقات MSG
يمكن لرسالة Outlook أن تحتوي على رسائل Microsoft Outlook أخرى كمرفقات إما كرسائل عادية أو مدمجة. الـ MapiAttachmentCollection يوفر أعضاء محملين للطريقة Add لإنشاء رسائل Outlook مع كلا نوعي المرفقات.
جرّبها!
إضافة أو إزالة مرفقات البريد الإلكتروني باستخدام النسخة المجانية Aspose.Email Editor App.
إضافة مرفقات مرجعية إلى 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 في رسالة.
قراءة الرسائل المدمجة من المرفقات
يوضح مقطع الشيفرة التالي كيفية قراءة الرسائل المدمجة من المرفقات.
إدراج واستبدال المرفق
توفر Aspose.Email API القدرة على إدراج المرفقات في فهرس محدد في الرسالة الأصلية. كما توفر إمكانية استبدال محتويات مرفق برسالة مرفق أخرى.
جرّبها!
تشغيل ReplaceAttach مشروع تطبيق بسيط، وجرب إمكانيات Aspose.Email لاستبدال المرفقات عمليًا.
إدراج المرفقات في مواقع محددة
توفر واجهة برمجة تطبيقات Aspose.Email القدرة على إدراج مرفق MSG إلى MSG أصلي باستخدام طريقة Insert في MapiAttachmentCollection (MapiAttachmentCollection Insert(int index, string name, MapiMessage msg)). يوضح المقتطف البرمجي التالي كيفية إدراج مرفق في موقع محدد.
استبدال محتويات المرفق
يمكن استخدام ذلك لاستبدال محتويات المرفقات المدمجة بأخرى جديدة باستخدام طريقة Replace. ومع ذلك، لا يمكن استخدامه لإدراج مرفق برقم PR_ATTACH_NUM = 4 (مثلاً) في مجموعة تحتوي على عدد عناصر collection.Count = 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";
حفظ المرفقات من الرسائل الموقعة رقمياً
توفر Aspose.Email API القدرة على الحصول على أو ضبط قيمة تشير ما إذا كانت الرسالة الموقعة بوضوح سيتم فك تشفيرها.