استرجاع وقائمة رسائل البريد من خادم IMAP
استرجاع وقائمة الرسائل
كيفية الحصول على معلومات تعريفية للرسائل في صندوق البريد
عند استرجاع ومعالجة رسائل البريد الإلكتروني، يمكنك الحصول على معلومات تعريفية مفصلة، مثل أرقام التسلسل والمعرفات الفريدة، باستخدام الميزات التالية التي توفرها أحدث نسخة من Aspose.Email لـ .NET:
Aspose.Email.ImapMessageInfo فئة: تمثل المعلومات التعريفية حول رسالة في صندوق بريد IMAP.
ImapMessageInfo.SequenceNumber خاصية: تسترجع رقم تسلسل الرسالة.
ImapMessageInfo.UniqueId خاصية: تسترجع المعرف الفريد للرسالة.
Aspose.Email.MailMessage.ItemId خاصية: تمثل معلومات تعريفية إضافية حول الرسالة داخل صندوق البريد.
يوضح مقتطف الشيفرة التالي كيفية الحصول على معلومات تعريفية للرسائل في صندوق بريد IMAP:
- إنشاء مثيل من الـ ImapClient فئة من خلال توفير المعلمات الضرورية مثل مضيف خادم IMAP، المنفذ، عنوان البريد الإلكتروني، كلمة المرور، وخيارات الأمان.
- استخدم الـ ListMessages طريقة لاسترجاع قائمة رسائل من المجلد "INBOX". قصر القائمة على أول خمس رسائل باستخدام طريقة Take(5).
- استخراج أرقام التسلسل للرسائل المدرجة باستخدام SequenceNumber خاصية لكل رسالة.
- استخدم الـ FetchMessages طريقة لاسترجاع التفاصيل الكاملة للرسائل من الخادم، باستخدام أرقام التسلسلية التي تم الحصول عليها في الخطوة السابقة.
- تكرار عبر الرسائل المسترجعة ولكل رسالة، استرجع واعرض المعلومات التالية:
- رقم تسلسل الرسالة.
- خاصية ItemId.SequenceNumber.
- موضوع الرسالة.
using (var client = new ImapClient(imapHost, port, emailAddress, password, securityOption))
{
// List the first 5 messages from the inbox
var msgs = client.ListMessages("INBOX").Take(5);
// Get sequence numbers of the messages
var seqIds = msgs.Select(t => t.SequenceNumber);
// Fetch messages based on sequence numbers
var msgsViaFetch = client.FetchMessages(seqIds);
for (var i = 0; i < 5; i++)
{
var thisMsg = msgsViaFetch[i];
Console.WriteLine($"Message ID: {seqIds.ElementAt(i)} SequenceNumber: {thisMsg.ItemId.SequenceNumber} Subject: {thisMsg.Subject}");
}
}
قائمة معرفات رسائل MIME من الخادم
ImapMessageInfo يوفر الـ MIME MessageId لتحديد الرسائل دون استخراج الرسالة كاملة. يوضح المقتطف البرمجي التالي كيفية سرد معرف MIME للرسالة.
قائمة الرسائل من الخادم
يوفر Aspose.Email نسخة محملة بمتغيرين من ListMessages() لاسترجاع عدد محدد من الرسائل بناءً على استعلام. يوضح مقتطف الشيفرة التالي كيفية سرد الرسائل.
إدراج الرسائل بشكل متكرر
يدعم بروتوكول IMAP سرد الرسائل بصورة متكررة من مجلد صندوق بريد. هذا يساعد في سرد الرسائل من المجلدات الفرعية كذلك. يوضح المقتطف البرمجي التالي كيفية سرد الرسائل بصورة متكررة.
إدراج الرسائل مع MultiConnection
ImapClient يوفر UseMultiConnection خاصية يمكن استخدامها لإنشاء اتصالات متعددة للعمليات الثقيلة. يمكنك أيضًا تحديد عدد الاتصالات التي ستُستخدم أثناء وضع متعدد الاتصالات باستخدام ImapClient.ConnectionsQuantity. يوضح المقتطف البرمجي التالي استعمال وضع الاتصال المتعدد لسرد الرسائل ويقارن أدائه مع وضع الاتصال الفردي.
إدراج الرسائل مع دعم التجزئة
في السيناريوهات التي يحتوي فيها خادم البريد على عدد كبير من الرسائل في صندوق البريد، غالبًا ما يكون من المطلوب سرد الرسائل أو استرجاعها مع دعم الصفحات. Aspose.Email API’s ImapClient يسمح لك بجلب الرسائل من الخادم مع دعم الصفحات.
قائمة مرفقات الرسائل
للحصول على معلومات حول المرفقات مثل الاسم والحجم دون جلب بيانات المرفق، جرّب واجهات برمجة التطبيقات التالية:
- Aspose.Email.Clients.Imap.ImapAttachmentInfo - تمثل معلومات مرفق.
- Aspose.Email.Clients.Imap.ImapAttachmentInfoCollection - تمثل مجموعة من الـ ImapAttachmentInfo فئة.
- Aspose.Email.Clients.Imap.ListAttachments(int sequenceNumber) - يحصل على معلومات لكل مرفق في الرسالة.
ستظهر لك عينة الشيفرة مع الخطوات أدناه كيفية استخدام واجهات برمجة التطبيقات:
- استدعِ الـ ListMessages() طريقة على كائن imapClient. ستُرجع هذه الطريقة ImapMessageInfoCollection التي تحتوي على معلومات حول الرسائل في صندوق البريد.
- تكرار عبر كل رسالة في messageInfoCollection باستخدام حلقة foreach.
- استدعِ الـ ListAttachments() طريقة على كائن imapClient، مع تمرير خاصية SequenceNumber لكائن الرسالة كمعامل. ستُرجع هذه الطريقة ImapAttachmentInfoCollection التي تحتوي على معلومات عن المرفقات في الرسالة.
- تكرار عبر كل مرفق في attachmentInfoCollection باستخدام حلقة foreach.
- داخل الحلقة الداخلية، يمكنك الوصول إلى معلومات كل مرفق باستخدام خصائص كائن attachmentInfo.
var messageInfoCollection = imapClient.ListMessages();
foreach (var message in messageInfoCollection)
{
var attachmentInfoCollection = imapClient.ListAttachments(message.SequenceNumber);
foreach (var attachmentInfo in attachmentInfoCollection)
{
Console.WriteLine("Attachment: {0} (size: {1})", attachmentInfo.Name, attachmentInfo.Size);
}
}
استرجاع الرسائل وحفظها
جلب الرسائل من الخادم
الـ ImapClient الفئة يمكنها جلب الرسائل من خادم IMAP وحفظها بصيغة EML على قرص محلي. الخطوات التالية مطلوبة لحفظ الرسائل على القرص:
- إنشاء مثيل من الـ ImapClient فئة.
- حدد اسم المضيف، المنفذ، اسم المستخدم، وكلمة المرور في ImapClient constructor.
- اختر المجلد باستخدام SelectFolder() طريقة.
- استدعِ الـ ListMessages طريقة للحصول على الـ ImapMessageInfoCollection الكائن.
- التكرار عبر الـ ImapMessageInfoCollection مجموعة، استدعِ الـ SaveMessage() طريقة وتزويد مسار الإخراج واسم الملف.
يُظهر مقتطف الشيفرة التالي كيفية جلب رسائل البريد الإلكتروني من خادم وحفظها.
جلب الرسائل بترتيب تنازلي
يوفر Aspose.Email ImapClient.ListMessagesByPage طريقة تقوم بسرد الرسائل بدعم الصفحات. بعض التحميلات الزائدة لـ ImapClient.ListMessagesByPage accept PageSettings كمعامل. PageSettings يوفر AscendingSorting خاصية، عندما تُضَبط على false، تُعيد الرسائل بترتيب تنازلي.
يُظهر مثال الشيفرة التالي كيفية استخدام AscendingSorting خاصية الـ PageSettings فئة لتغيير ترتيب الرسائل.
حفظ الرسائل بصيغة MSG
لحفظ الرسائل بصيغة MSG، الـ ImapClient.FetchMessage() يجب استدعاء الطريقة. تُعيد الرسالة ككائن من النوع MailMessage الفئة. الـ MailMessage.Save() يمكن بعد ذلك استدعاء الطريقة لحفظ الرسالة بصيغة MSG. يوضح مقتطف الشيفرة التالي كيفية حفظ الرسائل بصيغة MSG.
تجميع الرسائل المستخرجة
ImapClient يوفر FetchMessages طريقة التي تقبل iterable من أرقام التسلسل أو المعرف الفريد وتُعيد قائمة بـ MailMessage. يوضح المقتطف البرمجي التالي كيفية استخدام الـ FetchMessages طريقة لجلب الرسائل حسب أرقام التسلسل والمعرف الفريد.
جلب المجلدات وقراءة الرسائل بصورة متكررة
في هذه المقالة، معظم ImapClient تُستخدم الميزات لإنشاء تطبيق يسرد جميع المجلدات والمجلدات الفرعية بصورة متكررة من خادم IMAP. كما يقوم بحفظ الرسائل في كل مجلد ومجلد فرعي بصيغة MSG على قرص محلي. على القرص، تُنشأ المجلدات والرسائل وتُحفظ بنفس الهيكل الهرمي الموجود على خادم IMAP. يوضح المقتطف البرمجي التالي كيفية الحصول على رسائل ومعلومات المجلدات الفرعية بصورة متكررة.
معالجة معلومات الرسائل الخاصة
استرجاع المعلمات الإضافية كمعلومات ملخص
الحصول على معلومات رأس List-Unsubscribe
رأس List-Unsubscribe يحتوي على عنوان URL لإلغاء الاشتراك من القوائم البريدية مثل الإعلانات والنشرات الإخبارية، إلخ. للحصول على رأس List-Unsubscribe، استخدم ListUnsubscribe خاصية الـ ImapMessageInfo فئة. يُظهر المثال التالي استخدام ListUnsubscribe خاصية للحصول على رأس List-Unsubscribe.